AJAX请求状态返回0

时间:2009-11-27 18:58:39

标签: javascript ajax

当我使用此代码发出AJAX请求时,它返回状态为0.我做错了什么?此外,此代码仅用于因各种原因在Firefox中运行。

var ajax;

function connectToOtherServer(server,port,userid,password){

ajax=new XMLHttpRequest();
ajax.onreadystatechange=validateConnection;

params='userid='+encodeURIComponent(userid)+'&password='+encodeURIComponent(password);

alert('http://'+server+':'+port+'/ok.txt');

ajax.open('POST','http://'+server+':'+port+'/ok.txt',true);

ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-length",params.length);
ajax.setRequestHeader("Connection","close");

ajax.send(params);

}

function validateConnection(){
if(ajax.readyState===4){
if(ajax.status===200){

alert(ajax.responseText);

}else{
alert(ajax.status);
}
}
}

3 个答案:

答案 0 :(得分:3)

如果您尝试连接到其他服务器,same origin policy将阻止您:

  

术语“起源”是使用   域名,应用层   协议,以及(在大多数浏览器中)TCP   运行该文件的HTML文件的端口   脚本。考虑两种资源   当且仅限于同一来源   如果所有这些值都是正确的   相同。

答案 1 :(得分:1)

jquery.com如果您使用JSONP和回调,则只能连接到其他服务器。另一台服务器需要支持JSONP /回调机制。此方法涉及创建新的脚本标记,然后让远程服务器将回调代码返回到此脚本标记中。查看jQuery源代码(或只是使用它),看它处理JSONP。

基本思想是创建一个脚本标记,其中source作为远程URL。 remote方法使用回调和结果JSON数据返回包含函数调用的“脚本”。

答案 2 :(得分:0)

我最近遇到过这个问题。我一直在使用AJAX提交表单结果,以便页面元素可以自动更新。我的域名调用是正确的。关于数据库的SELECT语句可行,但INSERTUPDATEDELETE语句不会。

通过javascript显示进度的警报表明调用正常运行,但它永远不会进入该进程的php部分。简单的答案是表单的onsubmit元素需要包含return false;。添加之后,事情顺利进行。

<form name="form" action="" method="post" onsubmit="ProcessRequest(this);return false;">

希望这有帮助。