jQuery Ajax post 方法不成功(找不到路径):

jQuery Ajax post method not successful (not able to find the path):

我正在制作一个 Ajax post 方法来将一些数据发送到我的 java servlet post 方法,但是我面临的问题是它无法找到路径

这是我的 HTML 代码:

<select name="outlet" id="myselect">
  <option>----------------------</option>
  <option>ALL</option>
</select>

还有我的 jQuery (Ajax):

$("#myselect").on("change", function() {
  currentlyClickedOutlet = $(this).val();
  $.ajax({
    url: "./src/com/touchpoint/controller/DateWiseOlWiseSales.java",
    method: "POST",
    data: {
      Outlet: currentlyClickedOutlet,
    },
  });
});

这是我程序的文件树:

并且在浏览器控制台上显示错误 POST http://localhost:8080/TPWebReport/src/com/touchpoint/controller/DateWiseOlWiseSales.java 404

如果我给 URL:http://localhost:8080/TPWebReport/DateWiseOlWiseSales 那么它工作正常但主要问题是如果我将使用这个 URL 那么它仅适用于本地主机部署在服务器上它可能会导致问题而且我不不知道为什么会这样。

我在 eclipse mars 4.1.1 中使用 eclipse (2018-09),只输入 java class 名称,它工作正常,就像 URL:DateWiseOlWiseSales 它能够找到class 但在 2018-09 年的 eclipse 中不存在。

这是我的 web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>TouchPoint</display-name>
  <welcome-file-list>
    <welcome-file>Login.html</welcome-file>
  </welcome-file-list>
  <servlet>
    <display-name>LoginServlet</display-name>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.touchpoint.controller.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>LogoutServlet</servlet-name>
    <servlet-class>com.touchpoint.controller.LogoutServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LogoutServlet</servlet-name>
    <url-pattern>/LogoutServlet</url-pattern>
  </servlet-mapping>
</web-app>

仅在 Ajax URL 字段中输入 servlet 名称:DateWiseOlWiseSales

$.ajax({
       url : "DateWiseOlWiseSales",
       method : "POST",
....

并将以下内容添加到您的 web.xml

<servlet>
    <servlet-name>DateWiseOlWiseSales</servlet-name>
    <servlet-class>com.touchpoint.controller.DateWiseOlWiseSales</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>DateWiseOlWiseSales</servlet-name>
    <url-pattern>/DateWiseOlWiseSales</url-pattern>
  </servlet-mapping>

你应该一直用URL,javascript不知道你的服务器是Java还是PHP之类的。如果您的 html 页面来源相同,您可以使用 /TPWebReport/DateWiseOlWiseSales 而不是 http://localhost:8080/TPWebReport/DateWiseOlWiseSales

 $.ajax({
    url : "/TPWebReport/DateWiseOlWiseSales",
    method : "POST",
    data : {
        Outlet : currentlyClickedOutlet,  
    },
});

在我看来,您的服务器端点与本地开发环境之间存在脱节。您可能会在本地主机上成功,因为您可以访问该目录。但是,当您进行部署时,这些子目录可能无法提供。所以最终效果是 .成为部署服务器端点,服务器端代码只放弃暴露的东西。我只查看代码片段,但如果它在客户端页面中,那么您的 java 服务器将必须提供整个 /src/com/touchpoint/controller/DateWiseOlWiseSales.java

查看 java 服务器端代码中的服务器 http 处理程序,看看是否可以引导您解决问题。通常,您的服务器必须将资源特定地映射到请求。