1

我们一直在为我们的应用程序使用 Ajax 调用,并且它在服务器域中的 url 上运行良好。但是,当我在网络上使用 ajax 调用 url 时,我发现它在没有正确错误消息的情况下失败。我在网上搜索了给定的详细信息,但找不到任何合理的原因或解决此问题的方法。

我的代码是一个简单的 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();

如果 url 来自服务器域,则可以正常工作,但是当这是像 google 这样的开放 Internet url 时,它会在不同的浏览器中出现不同的行为而失败。

在 IE9 中,xmlhttp.open("GET",url,true) 给出“Javascript 错误:访问被拒绝”并且 xmlhttp.status 变为“由于错误 c00c023f 无法完成操作”

在 Chrome 和 FF 中,日志中没有显示错误,但是 xmlhttp.status 变为 0

在所有情况下,ajax 调用都不成功。

这种问题的原因可能是什么?我认为这不是网络问题,因为如果直接在浏览器上尝试,我可以访问 google url。那么,什么可能会阻止它从浏览器尝试 ajax 调用呢?

问候 Vijay.K

4

1 回答 1

1

跨域查询在 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/

于 2012-09-11T06:57:20.877 回答