状态为0

时间:2014-02-12 07:19:50

标签: javascript ajax html5 apache xmlhttprequest

您好我正在使用以下代码进行ajax调用

alert("4");
  req.onreadystatechange=function()
  {
  alert("5");
  if (req.readyState==4 && req.status==200)
    {
    xmlDoc=req.responseXML;
    alert("xml doc received"+xmlDoc);
    txt="";
    x=xmlDoc.getElementsByTagName("FIRSTNAME");
    y=xmlDoc.getElementsByTagName("LASTNAME");
    alert("Response achieved"+x);
    }
    else
    {
    alert("Error!!! --> req.readyState  "+req.readyState+" Error !!! ---> req.status  "+req.status);
    }
  }


req.open("POST",url,true);
alert("6");
req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
req.send(parameters);

我的req.readyState为4,req.status为0 可能是什么问题

我在本地apache服务器上托管文件。 请回复。

1 个答案:

答案 0 :(得分:3)

通常的原因是你试图进行跨域调用并被Same Origin Policy停止,这会禁止跨域调用ajax。您应该在开发人员控制台或网络选项卡中收到错误,告诉您请求已被阻止。

如果您控制有问题的服务器或者您可以联系那些服务器,您可以(让他们)通过Cross-Origin Resource Sharing启用您的来源访问。如果它们将您的原点列入白名单,适用于所有现代浏览器,但遗憾的是在IE8和IE9中您必须使用Microsoft的特殊XDomainRequest对象而不是XMLHttpRequest(从IE10开始,Microsoft最终加入了该方)。

或者,您可能会看到您尝试使用的服务器是否支持JSONP(不要将此与JSON混淆),尽管您的请求是POST且JSONP本身就是GET操作,他们可能没有。