jQuery $.get() на сервлете Java не работает

#javascript #java #jquery #jsp #servlets

#javascript #java #jquery #jsp #сервлеты

Вопрос:

У меня есть веб-приложение Java, которое использует сервлеты и jQuery. Я использую метод $.get() на сервлете, который просто преобразует объект в JSON и записывает его обратно. Раньше это работало, но по какой-то причине больше не работает. Я обнаружил в debug, что метод $.get() вообще не вызывается, но остальная часть файла Javascript вызывается. Он просто полностью пропускает метод $.get(). Однако я не могу понять, почему. Вот мой код:

JavaScript:

 window.onload = function () {

$.get('OrdersToJSONServlet', function (responseText) {
// ...I use responseText to populate Google Charts
}
  

Сервлет Java:

 /**
 * <h1>Servlet implementation for converting order objects to JSON for use with JS</h1>
 */
@WebServlet("/OrdersToJSONServlet")
public class OrdersToJSONServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
/**
 * @see HttpServlet#HttpServlet()
 */
public OrdersToJSONServlet() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @param request
 * @param response
 * @throws javax.servlet.ServletException
 * @throws java.io.IOException
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
    @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    Object orders = request.getSession().getAttribute("orders");
    String json = new Gson().toJson(orders);
    try {
        response.getWriter().write(json);
    } catch (IOException e) {
        System.out.println("problem parsing JSON");
    }
}

}
  

Я подумал, что, возможно, аннотация, на которую ссылается jQuery, была какой-то неправильной, но я не уверен, как и является ли это реальной проблемой. Заранее спасибо за помощь!

Комментарии:

1. Вы получаете какой-либо ответ, если просто нажимаете ссылку json вручную из браузера?

2. Я буду честен, я гораздо больше разработчик Java, чем веб-разработчик, и это мой первый веб-проект. Я подозреваю, что то, о чем вы говорите, — это функция инструментов разработчика Google, о которой я, возможно, не знаю. Но если я использую консоль javascript и вызываю $.get при простой печати содержимого responseText в консоль, я получаю null . Если я добавлю System.out.println в сервлет или использую точку останова, она никогда не вызывается, поддерживая предположение, что $.get никогда не запускается.

3. Не поймите меня неправильно, но я говорю, что если вы перейдете в адресную строку браузера и скопируете-вставьте абсолютный URL-адрес в сервлет и нажмите enter, и посмотрите, есть ли какая-либо ошибка или вы получите желаемый ответ?

4. Спасибо за вашу помощь, я действительно обнаружил, что у меня была функция window.onload в файле, которая после удаления все работала.

Ответ №1:

Для других, кто интересуется этой ситуацией, я сам разобрался с проблемой. Метод $.get был расположен внутри window.onload . Мой Javascript был во внешнем файле, и эти два были несовместимы. Глупая ошибка!