来自jquery的Ajax调用在firefox中运行,但在IE8中没有

我正在使用jquery,我对一个返回一些json数据的web服务进行ajax调用。 这在Firefox中完美无缺,但由于某种原因不在IE中。

$.ajax({ type: "GET", url: "http://domain.com/Service.svc/data", dataType: "json", success: function(data) { //In firefox this shows the right value of test but in IE8 just "0", why? alert(data.d.test); } }); 

我知道响应(数据)的内容是:

 {"d":{"__type":"MyContent:#","test":888.75,"test2":592.5}} 

所以警报在Firefox中显示888.75但在Internet Explorer中显示0。 我不明白为什么会这样?

问题是IE有缓存:标准为true,或者至少我认为它具有设置缓存:false使得正确的数据显示。 在IE中它始终显示旧数据。

 $.ajax({ type: "GET", url: "http://domain.com/Service.svc/data", cache: false, dataType: "json", success: function(data) { alert(data.d.test); } }); 

试试这个,看看会发生什么:

  jQuery.get("http://domain.com/Service.svc/data", function(data) { alert(data.d.test); },"json"); 

不确定这是否有帮助…

尝试在.ajax()调用中包含以下选项:

 data: "{}", contentType: "application/json; charset=utf-8", 

使用jQuery使用Web服务时,有一些ASP.Net和IE“陷阱”。 请阅读此处了解更多信息。

你可以这样做:

 $.ajax({ type: "GET", url: "http://domain.com/Service.svc/data", dataType: "json", success: function(jsondata) { data=eval("("+jsondata+")"); alert(data.d.test); } }); 

或者如果你不想使用eval然后给出内容类型为“text / javascript”的标题,或者你可以做一些像contentType:“application / json; charset = utf-8”,如上所述Lance McNearney

尝试在没有dataType情况下运行相同的脚本,您应该将原始JSON字符串作为data 。 提醒您,您将看到数据是否以正确的forms传递。