Ajax请求未传递给控制器

时间:2011-11-14 07:51:57

标签: javascript ajax spring jsp jstl

我向我的控制器发送了一个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()函数中使用此对象。

2 个答案:

答案 0 :(得分:4)

因为变量httpRequest应该在getStates()函数之外定义。否则processRequest()无法看到它。

答案 1 :(得分:1)

httpRequest之外声明getStates()(作为全局变量)或将其传递给processRequest()

httpRequest.onreadystatechange = function() { processRequest(httpRequest); };

function processRequest(httpRequest) {