Javascript 正在获取状态为0

Javascript 正在获取状态为0,javascript,ajax,html,apache,xmlhttprequest,Javascript,Ajax,Html,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.getElementsByT

嗨,我正在使用下面的代码进行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服务器上托管一个文件。
请回复。

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

如果您控制有问题的服务器,或者您可以联系那些控制服务器的人,您可以(让他们)通过启用从您的源站进行访问。如果他们将您的源代码列为白名单,这适用于所有现代浏览器,但遗憾的是,在IE8和IE9中,您必须使用Microsoft的特殊
XDomainRequest
对象,而不是
XMLHttpRequest
(从IE10开始,Microsoft终于加入了这一行列)


或者,您可能会看到您尝试使用的服务器是否支持(不要将其与JSON混淆),尽管您的请求是一个
POST
操作,而JSONP本质上是一个
GET
操作,但它们可能不是原因。

不是原因,而是:在处理ajax(或任何其他异步操作)时,不要使用
alert
alert
停止JavaScript解释器,并且可以(取决于您使用的浏览器)以奇怪的方式与异步代码交互。使用浏览器的调试器,它不仅是为此而设计的,而且可以为您提供更多信息。或者在最坏的情况下,使用
console.log
。但同样,调试器是专门为帮助您理解代码是如何运行的而设计的,允许您检查变量等可能的重复