jquery 1.9 .ajax()数据类型默认改变了吗?

给定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的一个可能的修复突然不支持各种切换function(不再支持eventLayer.X),现在我所有的ajax调用都抛出了以下javascript错误:

 Uncaught Syntax Error: Unexpected token o 

经过一些研究和一些测试后,我发现上面代码中的“responseText”现在是一个JSON对象,而不是一个字符串。 所以这个错误是有道理的,但我正试图绕过这个。 jQuery真的改变了默认的返回类型吗? 我检查了文档:

 http://api.jquery.com/jQuery.ajax/ 

和dataType默认为“智能猜测”。 我可以看到这可能是多么方便,但我也不喜欢它。

所以这是我的问题:

  1. 这是jQuery中的一个新的(ish)变化吗?
  2. 它的版本1.9是这样做的,还是之前是这样的,我是一个使用1.6的化石?
  3. 有什么建议可以解决这个问题,以及一些“面向未来”的代码?

这是一个非常根本的变化,会影响很多代码。 我将浏览我的代码并删除将我返回的数据解析为JSON的任何实例,但这一切都有点令人不安。 我是不是错误地指定了dataType? 我认为强制执行dataType而不是依赖默认值是一个好习惯,但是……哇。 我是独自一人,或者说jQuery的变化有点冒昧?

如果没有设置dataType,jQuery会根据返回的内容自动检测dataType是什么。 很可能1.9只是改进了检测以正确检测你作为json返回的内容。 最好始终提供数据类型以确保始终获得一致的结果。