【发布时间】:2013-01-11 22:33:58
【问题描述】:
我正在使用类似于下面的代码(一个非常简化的版本)执行跨域获取请求。
var addData = function() {
$.ajax({
type:'GET',
url:'http://DifferentDomain.com/data.php',
data:'body',
success: function(data){
$('body').html(data);
}
});
}
现在由于 IE 不支持 CORS,我需要使用 iecors 插件来使用 XDomainRequest,该插件效果很好,因为当 IE 使用 XHttpRequest 失败时,它会切换到 XDR。
但是我遇到的问题是$('body').html(data); 这似乎只有在我在控制台中实时执行时才在 IE 中有效,而不是在第一次在 $(document).ready 上调用时才有效? (这在所有其他支持 XHR 的浏览器中都可以正常工作)
我认为这是时间问题,所以我不确定如何解决这个问题,我是否使用setTimeout() 并为 IE 浏览器运行两次?请问有人可以提供一些建议吗?提前谢谢了。
编辑
我通过 setTimeout 执行它找到了解决方法,但仍然觉得这不是最好的解决方案,例如
setTimeout(function(){
addData();
},0);
【问题讨论】:
-
你什么时候打电话?你说“加载时”,但这是什么意思?
-
抱歉,这是由
$(document).ready调用的。我将编辑我的问题以显示这一点。 -
啊,好吧。您是否尝试过对
$.ajax调用使用error选项来查看是否出现任何HTTP 错误?另外,你检查过 IE 的开发者工具有没有错误? -
我看过了,他们都没有报告任何错误。当我第二次运行它时,IE 一切正常,所以我认为代码或访问数据文件没有任何问题。
-
如果你把它切换到onload而不是ready会有什么不同吗?
标签: javascript jquery ajax xdomainrequest