我们一直在为我们的应用程序使用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/

10-11 22:30
查看更多