我们遇到了一个关于 $.getJSON 调用的奇怪问题,它似乎只影响旧版本的 IE。代码如下:
var success = function (response) {
// do stuff
}
$.getJSON(url, success);
在 Chrome、Firefox、IE10 下,此代码运行良好 - getJSON 命中 URL(有效,并且不是跨域),返回 200 OK 并返回数据,如您所期望的那样传递给成功函数.
但是在IE9及以下,调用成功回调但传递的响应参数未定义。通过在 IE Dev Tools 中捕获网络流量,我可以看到调用到达 URL,返回 200 OK 并在响应正文中返回有效的 JSON。那么为什么在成功回调时会出现未定义的情况呢?
我尝试使用 $.ajax 调用来代替适当的参数,但我看到了相同的行为。下面的代码:
$.ajax({
dataType: "json",
url: url,
success: success
};
我们正在使用 jQuery 1.7.2(我们在页面上获得的库之一在 jQuery 的较新版本下被破坏,因此是旧版本)。
编辑:刚刚尝试更新页面以使用 jQuery 1.10.1,并不能解决问题。
编辑 2:我已经确认通过 jsonlint.com 返回的 JSON 数据是有效的,所以这也不是问题。