Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 奇怪的AJAX错误_Javascript_Ajax - Fatal编程技术网

Javascript 奇怪的AJAX错误

Javascript 奇怪的AJAX错误,javascript,ajax,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('na

为什么这样不行

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\U错误\U故障) [nsIXMLHttpRequest.setRequestHeader]


这件事曾经发生在我身上


在调用“setRequestHeader”之前,必须先调用“open”方法。我曾经遇到过这种情况


在调用“setRequestHeader”之前,必须先调用“open”方法。如果有用的话,您编写的所有代码都可以替换为以下一小段脚本:


请参见

如果有用,您所编写的所有代码都可以用以下一小段脚本替换:


请参见

w35l3y是正确的。除此之外,您不应该使用escape(),它是一种特殊的特定于JavaScript的编码方案,类似于URL编码,但与URL编码不兼容。您应该使用的函数是encodeURIComponent()。不要试图设置内容长度和连接头,这不是作为XMLHttpRequest用户的工作的一部分。w35l3y是正确的。除此之外,您不应该使用escape(),它是一种特殊的特定于JavaScript的编码方案,类似于URL编码,但与URL编码不兼容。您应该使用的函数是encodeURIComponent()。并且不要试图设置内容长度和连接头,这不是作为XMLHttpRequest用户的工作的一部分。机会可能会减少,但仍然缺少关闭报价错误@bobince-你可以修复你知道的。谢谢你的尖刻评论。@Hippo-我回答的开头是“以防有用”,而不是“这是你的解决方案”。谢谢你的否决票。可能机会少了,但仍然有一个错过的关闭报价错误@bobince-你可以修复你知道的。谢谢你的尖刻评论。@Hippo-我回答的开头是“以防有用”,而不是“这是你的解决方案”。谢谢你的否决票。
$(document).ready(function() {
    $.post('login.php?login=true', {name: $('#name'), pass: $('#pass')}, 
            function(response) {
                alert(response);
            }
    );
});