#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 был во внешнем файле, и эти два были несовместимы. Глупая ошибка!