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()放在参数内吗?
谢谢, Jon W
答案 0 :(得分:1)
这里有两个错误:
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