奇怪的AJAX错误

时间:2009-09-09 00:26:30

标签: javascript ajax

为什么这不起作用?

function login(){

if(window.XMLHttpRequest){
ajax=new XMLHttpRequest();
}else if(window.ActiveXObject){
ajax=new ActiveXObject("Microsoft.XMLHTTP");
}

ajax.onreadystatechange=validatelogin;

params='name='+escape(document.getElementById('name').value)+'&pass='+escape(document.getElementById('pass').value);

/*IT FAILS HERE*/
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 

ajax.setRequestHeader("Content-length",params.length);
ajax.setRequestHeader("Connection","close");

ajax.open('POST','login.php?login=true',true);
ajax.send(params);

}

function validatelogin(){
if(ajax.readyState===4){
if(ajax.status===200){
alert(ajax.responseText);
exit(0);
}else{
alert("FAIL!!!!!");
}
}
}

Firefox错误控制器抱怨

  

错误:组件返回失败   代码:0x80004005(NS_ERROR_FAILURE)   [nsIXMLHttpRequest.setRequestHeader]

2 个答案:

答案 0 :(得分:4)

曾经发生在我身上。

在调用“setRequestHeader”

之前,您必须调用“open”方法

答案 1 :(得分:2)

如果它有用,你编写的所有代码都可以用jQuery脚本的一小部分代替:

$(document).ready(function() {
    $.post('login.php?login=true', {name: $('#name'), pass: $('#pass')}, 
            function(response) {
                alert(response);
            }
    );
});

请参阅jQuery.post