在返回未定义的AJAX请求中,我看到无数线程散落在Internet上,涉及以下类似的代码:
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没有插件。
我要找的是:
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
}发布于 2012-01-24 20:24:28
在做一些研究时,我偶然发现了一个SOF帖子:Ajax responseText comes back as undefined
基于该帖子,您可能希望像这样实现ajax方法:
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);
}然后,你可以这样称呼这个方法..。
doRequest('http://mysite.com/foo', function(err, response) { // pass an anonymous function
if (err) {
return "";
} else {
return response;
}
});这应该会准确地返回responseText。如果这不能给出正确的结果,请告诉我。
https://stackoverflow.com/questions/8991109
复制相似问题