首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ajax请求未传递给控制器

Ajax请求未传递给控制器
EN

Stack Overflow用户
提问于 2011-11-14 07:51:57
回答 2查看 788关注 0票数 3

我向我的控制器发送AJAX请求。这个开发是在JSP和Spring环境中完成的。SimpleFormController被我正在使用的控制器覆盖。

使用JavaScript创建对象并发送请求。此请求不会传递给控制器。

发送请求的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是以我在dispatcher servlet中提到的方式给出的。

浏览器显示processRequest()函数中的错误,说明httpRequest未定义。但是,在前面的行中,我没有看到这个错误。我在getStates()函数中使用了这个对象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-14 08:08:30

这是因为变量httpRequest应该在getStates()函数之外定义。否则,processRequest()将看不到它。

票数 4
EN

Stack Overflow用户

发布于 2011-11-14 08:30:39

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

代码语言:javascript
运行
复制
httpRequest.onreadystatechange = function() { processRequest(httpRequest); };

function processRequest(httpRequest) {
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8118690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档