gpt4 book ai didi

javascript - callback() 会产生语法错误。对象不是函数

转载 作者:行者123 更新时间:2023-12-03 12:13:21 25 4
gpt4 key购买 nike

    var ajax = function(url,callback) {

if(window.XMLHttpRequest) {
xml = new XMLHttpRequest();
}
if(window.ActiveXObject) {
var xml = new ActiveXObject("Microsoft.XMLHTTP");
}
this.xml = xml;
alert(xml);
xml.onreadystatechange = function(callback) {
callback = callback();
if(xml.readyState == 4 && xml.status == 200) {
alert(xml);

}
}
xml.open('GET',url,true);
xml.send(null);

}

ajax('/server/eChck.php?email=email@yahoo.com',function(){
alert(xml);
});

callback() 不起作用。产生语法错误。任何人都可以向我解释一下我将如何编码,以便我可以将我的回调()放在参数中?

谢谢,乔恩·W

最佳答案

这里有两个错误:

xml.onreadystatechange = function(callback) {
callback = callback();
if(xml.readyState == 4 && xml.status == 200) {
alert(xml);

}
}

首先,您将创建就绪状态更改处理程序作为一个带有参数的函数,这并没有错,但您已将该参数命名为“callback”。这意味着在状态更改处理程序内部,“回调”指的是该参数,而不是传递给外部函数的“回调”。

其次,通过将调用回调函数的结果分配给“callback”,每次调用事件处理程序时都会覆盖该值。

我想你想要这样的东西:

xml.onreadystatechange = function() {
if(xml.readyState == 4 && xml.status == 200) {
callback();
}
}

编辑 - 除了这些更改之外,您还应该在“ajax”函数中声明“xml”变量:

var ajax = function(url,callback) {
var xml;

并取出这一行:

    this.xml = xml; // take this out

关于javascript - callback() 会产生语法错误。对象不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24852146/

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