Как получить объект JSON в сервлете из JSP? - PullRequest
0 голосов
/ 04 мая 2010

На странице JSP я написал:

var sel = document.getElementById("Wimax");
var ip = sel.options[sel.selectedIndex].value;
var param;
var url = 'ConfigurationServlet?ActionID=Configuration_Physical_Get';
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
httpRequest.open("POST", url, true);
httpRequest.onreadystatechange = handler(){
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
param = 'ip='+ip;
param += 'mmv='+mmv;
param += "tab="+tab;
}};
httpRequest.send(param);

Я хочу эту param переменную в моем ConfigurationServlet. Может кто-нибудь сказать мне, как получить этот объект JSON в сервлете?

Обновление : я изменил свои заявления и теперь он показывает код состояния как 200.

var index = document.getElementById("Wimax").selectedIndex;
var ip = document.getElementById("Wimax").options[index].text;
httpReq = GetXmlHttpObject();
alert(httpReq);
var param = "ip=" + ip; 
param += "&mmv=" + mmv; 
param += "&tab=" + tab; 
alert("param "+param);
var url="http://localhost:8080/WiMaxNM/ConfigurationServlet?ActionID=Configuration_Physical_Get";
url = url+"?"+param;
httpReq.open("GET",url,true);
alert("httpReq "+httpReq);
httpReq.onreadystatechange = handler;
httpReq.send(null);

Но возникла новая проблема. Управление вообще не идет к идентификатору действия сервлета, как указано в URL. Пожалуйста, скажите мне, что здесь не так.

1 Ответ

0 голосов
/ 04 мая 2010

Код в обработчике будет вызываться только ПОСЛЕ отправки запроса.Вам нужно заполнить param до этого.Вам также необходимо объединить отдельные параметры с помощью &.

Таким образом, например,

// ...
httpRequest.onreadystatechange = handler() {
    // Write code here which should be executed when the request state has changed.
    if (httpRequest.readyState == 4) {
        // Write code here which should be executed when the request is completed.
        if (httpRequest.status == 200) {
            // Write code here which should be executed when the request is succesful.
        }
    }
};

param = 'ip=' + ip;
param += '&mmv=' + mmv;
param += "&tab=" + tab;
httpRequest.send(param);

Затем вы можете получить к ним доступ в сервлете обычным HttpServletRequest#getParameter() способом.


Тем не менее, код Ajax, который вы разместили там, будет работать только в Microsoft Internet Explorer, а не во всех четырех других основных веб-браузерах, о которых знает мир.Другими словами, ваш код Javascript не будет работать примерно для половины людей в мире.

Я предлагаю взглянуть на jQuery , чтобы уменьшить всю многословную работу и преодолеть трудности.Совместимость с болями.Весь ваш код может быть легко заменен на

var params = {
    ip: $("Wimax").val();
    mmv: mmv,
    tab: tab
};
$.post('ConfigurationServlet?ActionID=Configuration_Physical_Get', params);

И все еще работать во всех браузерах!

Обновление : в соответствии с вашим обновлением, окончательный URL-адрес просто неверен.? обозначает начало строки запроса.У вас уже есть один в вашем URL.Вы должны использовать & для объединения параметров в строке запроса.Т.е.

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