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

时间:2010-01-10 15:15:52

标签: jquery

我正在使用jquery,我对一个返回一些json数据的webservice进行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。我不明白为什么会这样?

5 个答案:

答案 0 :(得分:3)

事情是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);
    }
});

答案 1 :(得分:0)

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

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

不确定这是否有帮助......

答案 2 :(得分:0)

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

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

使用jQuery使用Web服务时,有一些ASP.Net和IE“陷阱”。 Read here了解更多信息。

答案 3 :(得分:0)

你可以这样做:

$.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

答案 4 :(得分:-1)

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