来自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传递。