getJSON和$.ajax的区别

9
从一开始我想提到的是,我知道这个问题和我的标题相同,但那个用户问了一个他遇到的问题。
我的问题更加主观,关于它们之间的区别。我正在学习使用Jquery和Ajax,我遇到了这两种方法。现在对我来说,它们似乎都可以做同样的事情(从指定的URL获取原始JSON数据),但我相信它们之间有更大的差异。
我还注意到人们倾向于使用$.ajax而不是getJSON,这也有原因吗?
非常感谢您的帮助!

3
jQuery.getJSON() 只是 jQuery.ajax() 的简写形式。详情请见:http://api.jquery.com/jquery.getjson/。还有什么需要了解的吗? - Satpal
@Satpal 那么人们更多地使用 .ajax 是因为它获取更多的数据吗?我很困惑,为什么你会首选使用 getJSON 呢? - Marco Geertsma
1
只有在我知道数据类型仅为JSON且不需要指定标头、转换等时,我才会使用getJSON。 - Satpal
你是使用getJSON还是.ajax并设置datatype为JSON呢?你看到我的问题了吗?我知道它们现在非常相似,但我不明白为什么一开始会有一个getJSON。 - Marco Geertsma
你没有理解重点,为什么要使用速记?因为它在特定场景下易于使用。 - Satpal
如果你期望得到JSON,使用$.getJSON。它可以避免你输入更加复杂的$.ajax,并且更易读。此外,如果没有返回JSON,你也不会得到任何响应,这样就省去了检查返回内容是否为JSON的麻烦。 - minitauros
1个回答

14

$.getJSON()

来自 http://api.jquery.com/jquery.getjson/

这是一个Ajax的简写函数,相当于:

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

$.ajax()

来自http://api.jquery.com/jquery.ajax/

dataType (默认值: 智能猜测(xml, json, script, 或 html)) 类型: 字符串 预期从服务器返回的数据类型。如果未指定,则 jQuery 将尝试根据响应的 MIME 类型来推断它(XML MIME 类型将返回 XML,在 1.4 版本中,JSON 将返回 JavaScript 对象,1.4 版本中的脚本将执行该脚本,任何其他内容都将作为字符串返回)。可用的类型(以及传递给成功回调函数的第一个参数)为:

"json": 把响应结果解析为 JSON 并返回一个 JavaScript 对象。跨域 "json" 请求将被转换为 "jsonp",除非请求选项中包含 jsonp: false。 JSON 数据采用严格模式解析;任何格式不正确的 JSON 都将被拒绝并引发解析错误。从 jQuery 1.9 开始,空响应也将被拒绝;服务器应返回 null 或 {} 的响应。(有关正确的 JSON 格式化信息,请参见 json.org。)

这意味着如果你把 dataType 设置为 JSON,但是没有返回 JSON 数据,就会引发解析错误。

所以根据文档来看,$.getJSON() 等同于将 dataType 设置为 "json" 的 $.ajax(),这意味着如果返回的不是 JSON,你就会得到一个解析错误。

因此你关于这两者几乎相同的观点大部分都是正确的 :). $.getJSON() 只是比较详细的 $.ajax() 的快捷方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接