jQuery Ajax post метод не успешен (не может найти путь): - PullRequest
0 голосов
/ 11 декабря 2018

Я делаю метод поста Ajax для отправки некоторых данных в мой метод поста Java-сервлета, но проблема, с которой я сталкиваюсь, заключается в том, что он не может найти путь

Вот мой 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,
    },
  });
});

А вот дерево файлов моей программы:

this the program pattern

И на консоли браузера выдается ошибка POST http://localhost:8080/TPWebReport/src/com/touchpoint/controller/DateWiseOlWiseSales.java 404

Если я даю URL:http://localhost:8080/TPWebReport/DateWiseOlWiseSales, то он работает нормально, но главная проблема, если я буду использовать этот URL-адрес, это только для локального хоста при развертываниина сервере это может вызвать проблемы, и я не знаю, почему это происходит.

Я использую eclipse (2018-09) в eclipse mars 4.1.1, поставив только имя класса java, с которым он работал нормально, напримерURL:DateWiseOlWiseSales он смог найти этот класс, но не здесь, в затмении 2018-09.

вот мой 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>

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Вы всегда должны использовать URL, javascript не знает, является ли ваш сервер Java или PHP или что-то еще.Вы можете использовать /TPWebReport/DateWiseOlWiseSales вместо http://localhost:8080/TPWebReport/DateWiseOlWiseSales, если ваша HTML-страница находится в том же источнике.

 $.ajax({
    url : "/TPWebReport/DateWiseOlWiseSales",
    method : "POST",
    data : {
        Outlet : currentlyClickedOutlet,  
    },
});
0 голосов
/ 11 декабря 2018

Мне кажется, что существует разрыв между конечными точками вашего сервера и локальной средой разработки.Вы можете добиться успеха на локальном хосте, потому что у вас есть доступ к этому каталогу.Однако при развертывании эти подкаталоги могут не обслуживаться.Таким образом, чистый эффект заключается в том, что.становится конечной точкой сервера развертывания, а код на стороне сервера оставляет только то, что открыто.Я только смотрю на фрагмент, но если это на странице клиента, то ваш java-сервер должен был бы обслуживать весь /src/com/touchpoint/controller/DateWiseOlWiseSales.java

Посмотрите на ваш сервер httpобработчики в коде Java-серверной части и посмотрите, поможет ли это вам решить проблему.Зачастую вашему серверу приходится специально сопоставлять ресурс с запросом.

0 голосов
/ 11 декабря 2018

Поместите в поле URL Ajax только имя сервлета: 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>
...