Ajax 回调函数在被调用时不会运行
它抛出的错误是:Ajax 回调函数在被调用时不会运行,ajax,callback,Ajax,Callback,它抛出的错误是: 未捕获类型错误:回调不是functionxml.onreadystatechange@ global.js:30 有什么想法吗 我通过onreadystatechange函数传递数据变量并在回调函数中调用它来修复它 ajax : function(typ,url,callback) { if(window.XMLHttpRequest) { var xml = new XMLHttpRequest();
未捕获类型错误:回调不是functionxml.onreadystatechange@ global.js:30 有什么想法吗 我通过onreadystatechange函数传递数据变量并在回调函数中调用它来修复它
ajax : function(typ,url,callback) {
if(window.XMLHttpRequest) {
var xml = new XMLHttpRequest();
}
if(window.ActiveXObject) {
var xml = new ActiveXObject("Microsoft.XMLHTTP");
}
xml.onreadystatechange = function(callback) {
if(xml.readyState == 4 && xml.status == 200) {
callback();
}
}
xml.open(typ,url,true);
xml.send();
}
}
//Function being called
window.onload = function() {
JS.ajax("GET","/server/chkEmail.php?email=email@email.com",function() {
alert(xml.responseText);
});
}
试着这样做:
ajax : function(typ,url,callback) {
if(window.XMLHttpRequest) {
var xml = new XMLHttpRequest();
}
if(window.ActiveXObject) {
var xml = new ActiveXObject("Microsoft.XMLHTTP");
}
xml.onreadystatechange = function(data) {
if(xml.readyState == 4 && xml.status == 200) {
var data = xml.responseText;
callback(data);
}
};
xml.open(typ,url,true);
xml.send();
}
}
window.onload = function() {
JS.ajax("GET","/server/chkEmail.php? email=jonwcode@gmail.com",function(data){
alert(data);
});
}
请注意,该函数不接受任何参数,而在代码中,您传递了一个名为callback
的参数,该参数将覆盖外部范围中的callback
变量
更新: 看起来您对
xml
变量的作用域设置不当,并且它在AJAX回调中不可用。我强烈建议您阅读更多关于javascript变量作用域的内容。以下是如何使xml
变量可见:
xml.onreadystatechange = function() {
if (xml.readyState == 4 && xml.status == 200) {
callback();
}
};
浏览器的调试控制台怎么说?UncaughtTypeError:回调不起作用任何人有任何反馈?抛出另一个错误。未捕获引用错误:没有为调用回调函数的另一个页面定义xml。出现此错误的原因是您错误地限定了
xml
变量的范围。请参阅我的更新答案,以获取有关如何解决此问题的示例。
var xml = null;
if (window.XMLHttpRequest) {
xml = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xml = new ActiveXObject("Microsoft.XMLHTTP");
}
if (xml == null) {
alert('Sorry, your browser doesn\'t seem to support AJAX - please upgrade to a modern browser');
} else {
xml.onreadystatechange = function() {
if(xml.readyState == 4 && xml.status == 200) {
var data = xml.responseText;
callback(data);
}
};
xml.open(typ,url,true);
xml.send();
}