控件跳过ajax对象onreadystatechange函数。为什么?

时间:2014-11-25 07:24:59

标签: javascript php jquery ajax

我是网络开发的新手。创建了一个注册页面,对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;    
  }
}

2 个答案:

答案 0 :(得分:0)

这是因为它是一个事件回调函数,当服务器响应你的ajax请求时会调用它。如果您正在使用firefox按F12,请切换到网络选项卡并检查html和xhr以查看其状态。

答案 1 :(得分:0)

因为它是异步的,所以当你以线性方式逐步执行代码时,函数不会被调用。

当就绪状态发生变化时,本机代码会调用它。

如果要调试断点,请在函数内部插入断点。