Javascript 正在获取状态为0
嗨,我正在使用下面的代码进行ajax调用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
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
。但同样,调试器是专门为帮助您理解代码是如何运行的而设计的,允许您检查变量等可能的重复