Javascript $.getJSON(jQuery)在IE 8中不起作用

Javascript $.getJSON(jQuery)在IE 8中不起作用,javascript,jquery,ajax,internet-explorer,Javascript,Jquery,Ajax,Internet Explorer,有一些简单的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

有一些简单的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>  

var baseurl=http://mydomain.com/facebook/';
var setUpGame=功能(lvl){
var-ajaxurl;
ajaxurl=baseurl+'ajax.php?f=gg&l='+lvl;
$.getJSON(ajaxurl,函数(数据){
//在这里处理数据
});
};
$(文档).ready(函数(){
游戏设置(3);
});
问题是IE对$.getJSON有问题。调用堆栈显示它在jQuery内部失败(第123行,第183列),jQuery代码读取“returnnewa.XMLHttpRequest”

错误消息是“错误:对象不支持此属性或方法”。我已经验证了ajaxurl变量的值是否正确,以及URL是否返回正确的JSON


这可能是因为所有这些都在iFrame中运行吗?

我从jQuery 1.4.2切换到了1.3.2,这个问题就消失了

我花了好几个小时才弄明白,希望我能帮别人省去头痛

正如其他地方提到的,IE不使用XMLHttpRequest

然而,其他地方发布的许多解决方案对我来说并不适用

我试过:

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

  • 如果这是一个单例函数,JSONP就可以工作。但是我在一个相对复杂的对象中工作,它需要在一个页面上有多个实例,但是回调只在全局名称空间中有效,我最终会遇到冲突…非常难看的冲突

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

  • $.getJSON不适用于IE8-它抛出一个“拒绝访问”错误。基本上遇到了CORS问题。在全球层面上似乎没有任何帮助

  • 因此,我发现以下几点可行:

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

    这是一种黑客行为,因为我正在指定一个jsonp数据类型,即使返回的数据中没有包装函数。但是为了解决IE的XDomain问题,我们必须愚弄它,让它认为我们得到了一个JSONP脚本。

    尝试使用相对url而不是基本url。。。我在过去遇到过一些问题。相对URL不起作用:(当我使用IE的脚本调试器进行调试时,它会以红色显示ajaxurl变量。该变量的值是正确的,数据类型是string。但该值以红色显示。这有帮助吗?在代码中看到此情况的地方放置一个断点,并检查所有变量,以确保它们是您认为的。数据类型和类型是什么
    ajaxurl
    在代码中的红色点处的值?另外,只需确保iframe中的AJAX请求指向相同的域(完全相同的域)作为iframe文档。我已经在dev.jquery.com上创建了一个bug报告。不过,我不想仓促行事。如果他们进行调查并返回错误的其他原因,我将在这里发布正确的答案。