我向我的控制器发送了一个AJAX请求。这个开发在JSP和Spring环境中完成。 SimpleFormController 被我正在使用的控制器覆盖。
使用JavaScript我创建对象并发送请求。此请求未传递给控制器。
发送请求的JavaScript代码。
function getStates(){
var httpRequest;
var country = document.getElementById('countryName');
alert(country);
var url = '/developer/register.htm';
url = url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true');
if (window.ActiveXObject)
{
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
httpRequest = new XMLHttpRequest();
}
httpRequest.open("GET", url, true);
httpRequest.onreadystatechange = function() {processRequest(); };
httpRequest.send(null);
}
function processRequest() {
if(httpRequest.readyState == 4){
alert("inside ready state");
var response = http.responseText;
document.getElementById('states').innerHTML = response;
}
}
变量url
以我在调度程序servlet 中提到的方式给出。
浏览器在 processRequest()函数中显示错误,告知未定义httpRequest。但是,我没有在前面的行中得到这个错误。我在 getStates()函数中使用此对象。
答案 0 :(得分:4)
因为变量httpRequest
应该在getStates()
函数之外定义。否则processRequest()
无法看到它。
答案 1 :(得分:1)
在httpRequest
之外声明getStates()
(作为全局变量)或将其传递给processRequest()
:
httpRequest.onreadystatechange = function() { processRequest(httpRequest); };
function processRequest(httpRequest) {