IE在接收json响应时没有收到数据

IE在接收json响应时没有收到数据

问题描述:

我正在运行一个javascript函数,它从其他服务器获取数据并将其返回给另一个函数。在Chrome和Firefox这是工作完美,但在IE浏览器的任何版本(为什么我没有感到惊讶)功能不工作...以下是代码IE在接收json响应时没有收到数据

function getTotalCounts() { 
    var swings = ''; 
    var serviceUrl = 'http://urldata.com/getdata'; 
    $.ajax({ 
     type: "GET", 
     cache: false, 
     contentType: "application/json; charset=utf-8", 
     url: serviceUrl, 
     data: "{}", 
     async: false, 
     dataType: "json", 
     success: function (data) { 
      jQuery.each(data.InteractiveBlockList, function (i, val) { 
       swings = new Array(val.ActivationDay, val.GrassBlockCount, val.GrassSquareMeters, val.InstagramCount, val.PublicTweetCount, val.SwingCount); 
       var gettotalcounts; 
      }); 
      grassification(swings) 
     } 
    }); 
} 

什么做错了任何想法?

+1

你是否在ie中发现任何错误? – bipen 2013-05-04 17:11:53

+0

即没有错误...只是没有数据。如果我确实警觉(摇摆),我会从其他浏览器收到的数据响应除了IE – 2013-05-04 17:20:30

我不会感到惊讶您的问题来自您发送字符串“{}”作为数据的事实。尝试发送一个空的对象,而不是:

data: {}, //no quotes 
+0

这是什么意思?对不起......我不明白 – 2013-05-04 17:20:55

+0

在你的ajax配置中,你有数据:“{}”,把它替换为:data:{}, – 2013-05-04 17:22:38

+0

没有什么区别! – 2013-05-04 17:24:22

数据是在阿贾克斯可选..所以,如果你不需要任何信息服务器在您的所有.comment阿贾克斯然后发送没有必要使用它的data选项

//data="{}"; 

并确保您以;关闭脚本结束。

grassification(swings); 
      //----------^----here 

我终于搞清楚了问题所在。首先我添加了一个错误调用来查看它是什么错误。在Chrome/Firefox中没有错误,在IE中我遇到了“无传输错误”。经过一番谷歌搜索后发现问题是由于跨域脚本造成的,本博客给出了更好的解释http://mike-ward.net/blog/post/00660/force-jquery-1-5-to-always-allow-cross-site-scripting

在使ajax调用解决问题之前添加jQuery.support.cors = true;。奇怪它如何完全拒绝在所有版本的IE浏览器上工作,但多数民众赞成你的!