首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX -返回responseText

AJAX -返回responseText
EN

Stack Overflow用户
提问于 2012-01-24 17:16:01
回答 1查看 3.5K关注 0票数 0

在返回未定义的AJAX请求中,我看到无数线程散落在Internet上,涉及以下类似的代码:

代码语言:javascript
复制
AJAX.onreadystatechange = function() {
        if(AJAX.readyState == 4) {
            if(AJAX.status == 200) {
                var response = AJAX.responseText;
                return response;
            }
            else {
                window.alert('Error: ' + AJAX.status);
                return false;
            }
        }
};

我知道我应该“用”responseText来做一些事情,比如把它写到HTML中。问题是:,我没有那种豪华的。这段代码的目的是在运行快速AJAX请求的通用方法中,这样,所有用于发出AJAX请求的代码都不必一遍又一遍地写出(~40×),可能会出现一个小问题,从而破坏应用程序。

我的方法必须显式地return responseText“否则。”不写到HTML.HTML。我该怎么做呢?另外,我希望JQuery没有插件。

我要找的是:

代码语言:javascript
复制
function doAjax(param) {
    // set up XmlHttpRequest
    AJAX.onreadystatechange = function() {
            if(AJAX.readyState == 4) {
                if(AJAX.status == 200) {
                    var response = AJAX.responseText;
                    return response;
                }
                else {
                    window.alert('Error: ' + AJAX.status);
                    return false;
                }
            }
    };
    // send data
}
...
function doSpecificAjax() {
    var param = array();
    var result = doAjax(param);
    // manipulate result
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-24 20:24:28

在做一些研究时,我偶然发现了一个SOF帖子:Ajax responseText comes back as undefined

基于该帖子,您可能希望像这样实现ajax方法:

代码语言:javascript
复制
function doRequest(url, callback) {
    var xmlhttp = ....; // create a new request here

    xmlhttp.open("GET", url, true); // for async
    xmlhttp.onreadystatechange=function() {     
        if (xmlhttp.readyState==4) {
            if (xmlhttp.status == 200) {

                // pass the response to the callback function
                callback(null, xmlhttp.responseText);

            } else {
                // pass the error to the callback function
                callback(xmlhttp.statusText);
            }
        }
    }
    xmlhttp.send(null);
}

然后,你可以这样称呼这个方法..。

代码语言:javascript
复制
doRequest('http://mysite.com/foo', function(err, response) { // pass an anonymous function
    if (err) {
        return "";

    } else {
        return response;
    } 
});

这应该会准确地返回responseText。如果这不能给出正确的结果,请告诉我。

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

https://stackoverflow.com/questions/8991109

复制
相关文章

相似问题

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