您好我正在使用以下代码进行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服务器上托管文件。 请回复。
答案 0 :(得分:3)
通常的原因是你试图进行跨域调用并被Same Origin Policy停止,这会禁止跨域调用ajax。您应该在开发人员控制台或网络选项卡中收到错误,告诉您请求已被阻止。
如果您控制有问题的服务器或者您可以联系那些服务器,您可以(让他们)通过Cross-Origin Resource Sharing启用您的来源访问。如果它们将您的原点列入白名单,适用于所有现代浏览器,但遗憾的是在IE8和IE9中您必须使用Microsoft的特殊XDomainRequest
对象而不是XMLHttpRequest
(从IE10开始,Microsoft最终加入了该方)。
或者,您可能会看到您尝试使用的服务器是否支持JSONP(不要将此与JSON混淆),尽管您的请求是POST
且JSONP本身就是GET
操作,他们可能没有。