我们一直在为我们的应用程序使用Ajax调用,并且在服务器域中的URL上运行良好。但是,当我在Web上对URL使用ajax调用时,我发现它失败而没有正确的错误消息。我在网上搜索了给出的详细信息,但找不到任何合理的原因或解决方案。
我的代码是一个简单的ajax调用,如下所示。
var url = "http://www.google.com";
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert('done');
}
};
xmlhttp.open("GET",url,true);
xmlhttp.send();
如果该网址来自服务器域,则可以正常工作,但是当它是开放的互联网网址(如google)时,它将在不同的浏览器中以不同的行为失败。
在IE9中,xmlhttp.open(“ GET”,url,true)给出了“ Javascript错误:访问被拒绝”,并且xmlhttp.status变为“由于错误c00c023f而无法完成操作”
在Chrome和FF中,日志中未显示任何错误,但是xmlhttp.status变为0
在所有情况下,ajax调用都不成功。
造成此问题的原因可能是什么?我认为这不是网络问题,因为如果直接在浏览器上尝试,我可以访问Google网址。那么,什么可能阻止它尝试从浏览器进行Ajax调用呢?
问候
维杰
最佳答案
跨域查询在IE 9,Chrome,Firefox中不起作用。这是一个安全问题。但是,为什么您仍然使用XHR?您可以使用jQuery出色的$.ajax
对吗?为此,您可以简单地使用这种方式:
$(document).ready(function(){
$.ajax({
url: "http://www.google.com/",
success: function(){
alert("Done!");
}
});
});
这里的问题是您正在尝试访问跨域,这是一种安全冲突,并且无论您做什么,该状态始终返回
0
。检查小提琴。小提琴:http://jsfiddle.net/uazqY/
关于javascript - 对Web URL的Ajax调用导致javascript错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12364272/