gpt4 book ai didi

javascript - $.getJSON (jQuery) 在 IE 8 中不工作

转载 作者:行者123 更新时间:2023-11-29 09:59:56 27 4
gpt4 key购买 nike

有一些直接的 AJAX 代码可以在 Firefox 和 Chrome 中运行,但不能在 IE 中运行。我没有做任何花哨的事情,但是代码太长了,无法在此处发布。

本质上,它是:

<script type="text/javascript">
var baseurl = 'http://mydomain.com/facebook/';
var setUpGame = function(lvl){
var ajaxurl;
ajaxurl = baseurl+'ajax.php?f=gg&l='+lvl;
$.getJSON(ajaxurl,function(data){
//do stuff with data here
});
};
$(document).ready(function(){
setUpGame(3);
});
</script>

问题是IE对$.getJSON有问题。调用堆栈显示它在 jQuery 的内部(第 123 行,第 183 列)失败,其中 jQuery 代码显示为“return new A.XMLHttpRequest”

错误信息是“错误:对象不支持这个属性或方法”。我已验证 ajaxurl 变量具有正确的值,并且该 URL 返回正确的 JSON。

这会发生吗,因为所有这些都在 iFrame 中运行?

最佳答案

我花了好几个小时才弄明白这个问题,希望我能帮其他人解决这个问题。

如别处所述,IE 不使用 XMLHttpRequest。

但是,其他地方发布的许多解决方案都不适合我。

我试过:

  1. jQuery.support.cors = true;但这似乎没有任何作用。

  2. 如果这是一个单例函数,JSONP 就可以工作。但是我在一个相对复杂的对象内部工作,它需要在一个页面上有多个实例,但回调只在全局 namespace 中真正起作用,我最终遇到了冲突……非常丑陋的冲突。

  3. $.getScript 对我不起作用,因为我需要实际处理返回的 json 数据。虽然“脚本”数据类型不会引发 XDomain 访问错误,但它也不会将实际数据返回到我的 .success 回调函数。

  4. $.getJSON 不适用于 IE8 - 它会抛出“拒绝访问”错误。基本上遇到了 CORS 问题。在全局范围内似乎没有任何帮助。

所以我发现以下是有效的:

$.ajax({ 
url : remote_cross_domain_non_local_url,
dataType : 'jsonp'
})
.success( function(data){ dosomethingwithdata(data); } );

这有点像 hack,因为我指定了 jsonp 数据类型,即使返回的数据中没有包装函数。但是为了绕过 IE 的 XDomain 问题,我们必须愚弄它,让它认为我们正在获取一个 JSONP 脚本。

关于javascript - $.getJSON (jQuery) 在 IE 8 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3154273/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com