在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
变量。谁能告诉我如何在servlet中获取这个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);
但是出现了新的问题。 Control根本不是url中指定的servlet操作ID。请告诉我这里有什么问题。
答案 0 :(得分:0)
只有在发送请求后才会调用处理程序中的代码。您需要在此之前填充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()
方式在servlet中访问它们。
也就是说,您在那里发布的Ajax代码只能在Microsoft Internet Explorer中使用,而不是全世界所知的其他四个主要的Web浏览器。换句话说,您的Javascript代码不适用于世界上大约一半的人。
我建议您查看jQuery以减轻所有冗长的工作并弥合交叉浏览器的兼容性问题。
可以轻松替换所有代码var params = {
ip: $("Wimax").val();
mmv: mmv,
tab: tab
};
$.post('ConfigurationServlet?ActionID=Configuration_Physical_Get', params);
并且仍在所有网络浏览器中工作!
更新:根据您的更新,最终的网址是完全错误的。 ?
表示查询字符串的开始。您的网址中已有一个。您应该使用&
链接查询字符串中的参数。即。
url = url + "&" + param;