我是网络开发的新手。创建了一个注册页面,对php进行了一些异步调用。 Ran调试发现控件完全跳过onreadystatechange函数。请帮忙......
var ajax = ajaxObj("POST", "signup.php"); //defines the ajax object, definition is below
ajax.onreadystatechange = function () { //doesn't run after this line
if(ajaxReturn(ajax) == true) {
if(ajax.responseText != "signup_success"){
status.innerHTML = ajax.responseText;
_("signupbtn").style.display = "block";
} else {
window.scrollTo(0,0);
_("signupform").innerHTML = "OK "+u+", check your email inbox and junk mail box
at <u>"+e+"</u> in a moment to complete the sign up process.";
}
}
}
ajax.send("u="+u+"&e="+e+"&p="+p1+"&c="+c+"&g="+g); //control reaches here directly
}
}// control exits here
ajax对象在外部创建..
function ajaxObj( meth, url ) {
var x = new XMLHttpRequest();
x.open( meth, url, true );
x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
return x;
}
function ajaxReturn(x){
if(x.readyState == 4 && x.status == 200){
return true;
}
}
答案 0 :(得分:0)
这是因为它是一个事件回调函数,当服务器响应你的ajax请求时会调用它。如果您正在使用firefox按F12,请切换到网络选项卡并检查html和xhr以查看其状态。
答案 1 :(得分:0)
因为它是异步的,所以当你以线性方式逐步执行代码时,函数不会被调用。
当就绪状态发生变化时,本机代码会调用它。
如果要调试断点,请在函数内部插入断点。