Javascript вызывает Java-сервлет и возвращает справку по данным - PullRequest
0 голосов
/ 22 сентября 2009

У меня нет большого опыта работы с сервлетами, и я ходил кругами в поисках ответа на мою проблему. Настало время получить ответы экспертов! :)

Обзор: Мне нужно, чтобы Javascript вызывал мой сервлет и возвращал данные для обновления значения в форме.

У меня есть Java-сервлет, работающий в Glassfish V2.1, который называется DBGet, цель которого - вернуть строку данных из базы данных mysql. У меня нет проблем с кодированием этой части.

Когда я пытаюсь получить javascript для доступа к сервлету DBGet, я получаю объект ответа XML, который я действительно не знаю, как анализировать, чтобы получить данные. Я даже не уверен, что это лучший метод для использования. Так что я открыт для других решений.

Я нашел этот код в сети. и изменил его, чтобы работать с тем, что у меня есть.

function ajaxLoad(logid) {
var servlet = "DBGet";          //the name (URI) of the sevlet
var arg = "logid=" + logid;     //attributes
var req = servlet + "?" + arg;  //compiling the request

addrequest(req);                          //calls the addrequest function
request.onreadystatechange = function(){  //this is used to listen for changes in the request's status
 if(this.readyState == 2) {
   //not sure what to do here.....
  }
 }
alert(request.toString()); //for testing 

}

функция addrequest (req) {

try {                                     //create a request for netscape, mozilla, opera, etc.
    request = new XMLHttpRequest();
}catch (e) {

    try {                                 //create a request for internet explorer
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }catch (e) {                           //do some error-handling
        alert("XMLHttpRequest error: " + e);
    } }

request.open("GET", req, true);       //prepare the request
request.send(null);     //send it

return request;}

1 Ответ

0 голосов
/ 22 сентября 2009

Техника JavaScript, которую вы используете для извлечения данных с сервера, часто называется асинхронной Java и XML (AJAX). Вы захотите настроить метод onreadystatechange в addrequest () перед вызовом send (); что вы хотите сделать, это передать метод обратного вызова в addrequest () и:

if (http.readyState == 4 && http.status == 200) {
  callback(http);
}

Запрос отправляется при вызове send (); метод onreadystatechange () запускается при получении ответа от сервера. Это может быть сделано синхронно (браузер будет зависать до получения ответа) или асинхронно (метод отправки завершается, а другой код / ​​поведение может выполняться до запуска onreadystatechange ()). В вашем методе обратного вызова:

-http.responseText имеет результат запроса

-http.responseXML имеет объект документа XML в стиле DOM, если ответ приходит в допустимом формате XML.

-Проверьте http.responseXML.parseError.errorCode (0 означает успех)

-Если есть ошибка, http.responseXML.parseError.reason показывает сообщение об ошибке

- Обратите внимание, что вызов AJAX может быть «успешным», но сервер может отправить ответ об ошибке; Вы должны проверить это также.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...