给定一个 ajax 调用,例如:
$.ajax(
{
url:"MyWebService.blah",
data: {"data":"awesome"},
success : function(responseText)
{
var myJsonObj = $.parseJSON(responseText);
//do stuff with myJsonObj
}
});
这工作正常。我今天将 jQuery 更新到 1.9(我在 1.6 上使用了一段时间)作为 Safari 突然不支持各种切换功能的可能修复(关于 eventLayer.X 的东西不再支持),现在我所有的 ajax 调用都抛出了以下javascript错误:
Uncaught Syntax Error: Unexpected token o
经过一些研究和测试,我发现上面代码中的“responseText”现在是一个 JSON 对象,而不是字符串。所以这个错误是有道理的,但我正试图解决这个问题。jQuery 真的改变了默认返回类型吗?我检查了文档:
http://api.jquery.com/jQuery.ajax/
并且 dataType 默认为“智能猜测”。我可以看到这可能很方便,但我也不喜欢它。
所以这是我的问题:
- 这是 jQuery 的一个新的(ish)变化吗?
- 是 1.9 版做到了这一点,还是以前是这样的,我是一个一直在使用 1.6 的化石?
- 有什么建议可以处理这个问题以及我的代码“面向未来”吗?
这是一个非常根本的变化,会影响很多代码。我将检查我的代码并删除任何将我返回的数据解析为 JSON 的实例,但这整件事有点令人不安。我没有指定数据类型是不是弄错了?我认为强制执行 dataType 而不是依赖默认值是一个好习惯,但是......哇。我是独自一人,还是 jQuery 的改变有点冒昧?