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

Ace*_*ban 5 string jquery json return-type

给定ajax调用,例如:

$.ajax(
{
    url:"MyWebService.blah",
    data: {"data":"awesome"},
    success : function(responseText)
    {
       var myJsonObj = $.parseJSON(responseText);
       //do stuff with myJsonObj
    }
});
Run Code Online (Sandbox Code Playgroud)

这工作正常.我今天将jQuery更新为1.9(我在1.6上暂时)作为Safari的一个可能的修复突然不支持各种切换功能(不再支持eventLayer.X),现在我所有的ajax调用都抛出了以下javascript错误:

Uncaught Syntax Error: Unexpected token o
Run Code Online (Sandbox Code Playgroud)

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

http://api.jquery.com/jQuery.ajax/
Run Code Online (Sandbox Code Playgroud)

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

所以这是我的问题:

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

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

use*_*654 6

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