我正在使用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。我不明白为什么会这样?
答案 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
。提醒您,您将看到数据是否以正确的形式传递。