Хотя у меня есть опыт программирования, я совершенно новичок в GS, JS или что-то, что связано с пользовательским интерфейсом.Ajax звонок от Greasemonkey до сервлета: отказ ответа
Сценарий: Создание вызова AJAX из Greasemonkey скрипт для сервлета
Greasemonkey/JS код:
function getResultsData(query){
alert("Getting the Data");
$.ajax(
{
cache: false,
data: {"q":query},
dataType:"text",
url: "http://myserver.com:8000/search?",
success: processData
}); //end of $.ajax }
function processData(data){
alert("Got the data");
var myResultDiv = document.getElementById("searchRes");
myResultDiv.innerHTML = data; }
Servlet Код:
System.out.println("-----------This is an AJAX call------------------");
//Commented the original logic
resp.setContentType("text/plain");
resp.setCharacterEncoding("UTF-8");
resp.getWriter().write("Text from Servlet");
Проблема:
G Код S/JS отлично работает, если URL (в $ .ajax) является некоторым другим существующим API. Ответ отражается в UI
Однако, когда я указываю URL-адрес моего сервера, я могу наблюдать в Firebug.Console, что для этого вызова нет ответа HTTP, но статус говорит 200 OK, при этом вся запись была «RED».
Когда я проверяю URL-адрес, скопированный из «записи вызова HTTP Firebug», он отлично работает, поскольку я вижу ответ «Текст из сервлета» на новой вкладке.
Может кому-то помочь.
Примечание сайт, на котором Greasemonkey работает, и мой сервер принадлежат к одному домену, т.е.
Greasemonkey сайт: wwww.example.com
Мой сервер: www.myserver.example.com
Вы можете изменить URL-адрес на «поиск» вместо «http://myserver.com:8080/search?». .... также добавьте еще одну строку в ваш сервлет ... resp.getWriter(). flush() – jsshah
Спасибо за ответ. Пытались оба, не повезло. Я предполагаю, что вы имели в виду - «http://myserver.com:8080/search» – Firefox
пропустить часть myserver.com:8080 ... просто указать относительный URL – jsshah