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默认为"智能猜测".我可以看到这可能是多么方便,但我也不喜欢它.
所以这是我的问题:
这是一个非常根本的变化,会影响很多代码.我将浏览我的代码并删除将我返回的数据解析为JSON的任何实例,但这一切都有点令人不安.我错误地指定了dataType?我认为强制执行dataType而不是依赖于默认值是一个好习惯,但是......哇.我是独自一人,或者说jQuery的变化有点冒昧?
如果没有设置dataType,jQuery会根据返回的内容自动检测dataType是什么.最有可能1.9只是改进了检测以正确检测你作为json返回的内容.最好始终提供数据类型以确保始终获得一致的结果.
| 归档时间: |
|
| 查看次数: |
2196 次 |
| 最近记录: |