$ .getJSON(jQuery)不能在IE 8中工作
有一些直接的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内运行?
我从jQuery 1.4.2切换到1.3.2,此问题消失。
请确保您将此标记为正确/被接受的答案:) – 2010-07-01 04:48:11
我在dev.jquery.com上创建了一个错误报告。不过,我不想跳枪。如果他们调查并回到其他原因导致错误,我会在这里发布正确答案。 – tinkerr 2010-07-01 05:22:01
花了我几个小时才弄明白,所以希望我能救别人头疼。
如别处所述,IE不使用XMLHttpRequest。
但是,其他地方发布的许多解决方案都不适用于我。
我想:
jQuery.support.cors = true;
但是,这似乎并没有做任何事情。如果这是一个单例函数,JSONP将起作用。但是我正在一个相对复杂的对象中工作,这个对象需要在一个页面上有多个实例,但回调只能在全局名称空间中工作,并且碰到碰撞......非常难看的碰撞。
$ .getScript不适用于我,因为我需要真正按摩返回的json数据。虽然'script'dataType不会引发XDomain访问错误,但它也不会将实际数据返回到我的.success回调函数。
$ .getJSON不适用于IE8 - 它会引发“访问被拒绝”错误。基本上遇到CORS问题。而全球层面上的任何事情似乎都没有帮助。
所以,我发现了什么作品如下:
$.ajax({
url : remote_cross_domain_non_local_url,
dataType : 'jsonp'
})
.success(function(data){ dosomethingwithdata(data); });
这是一种黑客攻击的,因为我指定即使是在回来的数据没有包装功能的JSONP数据类型。但为了解决IE浏览器的XDomain问题,我们必须欺骗它,认为我们正在获取JSONP脚本。
您使用的是jQuery 1.4.2吗? – tcooc 2010-07-01 00:16:02
尝试使用相对网址而不是基本网址...我在过去遇到过一些麻烦。 – Mottie 2010-07-01 01:18:29
相对URL无效:( 当我使用IE的脚本调试器进行调试时,它显示红色的ajaxurl变量,变量的值是正确的,数据类型是字符串,但值显示为红色。那有帮助吗? – tinkerr 2010-07-01 01:52:57