我们一直在为我们的应用程序使用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();
如果网址来自服务器域,则无任何问题,但是当这是一个像google这样的开放网络网址时,它会在不同的浏览器中以不同的行为失败。
在IE9中,xmlhttp.open(" GET",url,true)出现“Javascript错误:拒绝访问”#39;和xmlhttp.status成为'由于错误c00c023f'
,无法完成操作在Chrome和FF中,日志中没有显示错误,但xmlhttp.status变为0
在所有情况下,ajax调用都不成功。
这种问题的原因可能是什么?我不认为这是一个网络问题,因为如果直接在浏览器上试用,我可以访问谷歌网址。那么,什么可能阻止它从浏览器尝试ajax调用?
此致 Vijay.K
答案 0 :(得分:1)
跨域查询在IE 9,Chrome,Firefox中不起作用。这是一个安全问题。但是,为什么你仍然使用XHR?你可以使用jQuery的真棒$.ajax
吗?为此,您可以简单地使用这种方式:
$(document).ready(function(){
$.ajax({
url: "http://www.google.com/",
success: function(){
alert("Done!");
}
});
});
这里的问题是您正在尝试访问跨域,这是一种安全违规,状态将始终返回0
,无论您做什么。检查小提琴。