json - jquery 1.9 .ajax() 数据类型默认更改?

标签 json string jquery return-type

给定一个 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/

数据类型默认为“智能猜测”。我知道这可能很方便,但我也不喜欢它。

这是我的问题:

  1. 这是 jQuery 中的新变化吗?
  2. 是 1.9 版本这样做了,还是以前也这样,而我一直在使用 1.6 版本?
  3. 有哪些建议可以处理这个问题并让我的代码“面向 future ”?

这是一个非常根本的变化,会影响很多代码。我将检查我的代码并删除任何将返回的数据解析为 JSON 的实例,但这整件事有点令人不安。我没有指定数据类型是错误的吗?我认为强制使用 dataType 而不是依赖默认值是一个很好的做法,但是......哇。我是唯一一个这样做的人,还是 jQuery 的改变有点自以为是?

最佳答案

如果未设置数据类型,jQuery 会根据返回的内容自动检测数据类型。很可能 1.9 只是改进了该检测,以正确检测您以 json 形式返回的内容。最好始终提供数据类型,以确保您始终获得一致的结果。

关于json - jquery 1.9 .ajax() 数据类型默认更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15977876/

相关文章:

jquery - 如何处理 jQuery Mobile 中的表单错误状态并返回 HTML?

json - 如何根据 JSON 字符串值设置图标?

javascript - 正则表达式 if else 语句失败

java - 使用特定字符集将 byte[] 转换为 String 时避免创建 'new' String 对象

jquery - 如何在 css calc() 中发送动态值

jquery - Image Map 不会对 JQuery UI ID 使用react

javascript - 使用 JSON.parse 时获取 'Uncaught SyntaxError: Unexpected token o in <unknown file>:1'

json - 更新到 Xcode 8.1 : Can no longer convert JSON data of type AnyObject to expected Type

C++ vector.push_back(string) 调用 SQLGetData 后出现段错误

java - 重复从字符串中删除子字符串