给定一个 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/
数据类型默认为“智能猜测”。我知道这可能很方便,但我也不喜欢它。
这是我的问题:
- 这是 jQuery 中的新变化吗?
- 是 1.9 版本这样做了,还是以前也这样,而我一直在使用 1.6 版本?
- 有哪些建议可以处理这个问题并让我的代码“面向 future ”?
这是一个非常根本的变化,会影响很多代码。我将检查我的代码并删除任何将返回的数据解析为 JSON 的实例,但这整件事有点令人不安。我没有指定数据类型是错误的吗?我认为强制使用 dataType 而不是依赖默认值是一个很好的做法,但是......哇。我是唯一一个这样做的人,还是 jQuery 的改变有点自以为是?
最佳答案
如果未设置数据类型,jQuery 会根据返回的内容自动检测数据类型。很可能 1.9 只是改进了该检测,以正确检测您以 json 形式返回的内容。最好始终提供数据类型,以确保您始终获得一致的结果。
关于json - jquery 1.9 .ajax() 数据类型默认更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15977876/