嘿,伙计们,我在处理生活和阿贾克斯的电话,它似乎完全没有反应.
var $ = {
core:function(u){
return new $.httpRequest(u);
},
httpRequest:function(url){
var text;
var r = new XMLHttpRequest();
r.open("GET", url, true);
r.onreadystatechange = function () {
if (this.readyState != 4 || this.status != 200) return;
text = this.responseText;
};
r.send();
console.log(text);
return text;
}
};我错过了什么愚蠢的东西吗?我刚谈过几次,我非常希望我们的智慧,以便各位议员能提供帮助。我应该把返回放在onload中吗?
发布于 2014-02-23 16:20:59
您分配的onreadystatechange函数是您需要处理responseText的地方。您需要在那里处理它,或者调用某个函数并将数据传递给它。记住,ajax调用是异步的,这意味着您使用您的r.send()启动它,您的$.httpRequest()函数完成了,执行之后您的另一个javascript,然后过了一段时间,ajax调用完成并调用了您的onreadystatechange函数。此时,您所能做的就是处理该函数中的数据,或者调用其他函数并将数据传递给它。
下面有一种使用传入httpRequest函数的回调函数的方法:
var $ = {
core:function(u){
return new $.httpRequest(u);
},
httpRequest:function(url, callback){
var r = new XMLHttpRequest();
r.open("GET", url, true);
r.onreadystatechange = function () {
if (r.readyState != 4 || r.status != 200) return;
callback(r.responseText);
};
r.send();
}
};示例用法:
$.httpRequest("http://examplesite.com/myurl", function(data) {
// write code here to process the data
});https://stackoverflow.com/questions/21970764
复制相似问题