gpt4 book ai didi

javascript - IIFE 内的 Vanilla Javascript Ajax 调用没有响应

转载 作者:行者123 更新时间:2023-11-30 17:36:19 25 4
gpt4 key购买 nike

嘿伙计们,我正在运行一个 IIFE 和一个 ajax 调用,它似乎根本没有响应......

    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;
}
};

我是否遗漏了什么愚蠢的东西?刚刚经历过几次,我忙得不可开交,希望我们精明的 SO 成员能帮忙。我应该将返回放在 onload 中吗?

最佳答案

您分配的 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
});

关于javascript - IIFE 内的 Vanilla Javascript Ajax 调用没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21970764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com