getJSON和$ .ajax之间的区别

时间:2016-01-15 08:27:56

标签: jquery ajax

从一开始我想提及我知道THIS问题与我的问题相同,但该用户询问了他遇到的问题。

我对这些差异的质疑更具主观性。我正在学习使用Jquery和Ajax,我遇到了这两种方法。现在对他来说,他们似乎都是这样做的。 (从指定的URL获取原始JSON数据)但我确定存在更大的差异。

我也注意到人们倾向于使用$ .ajax而不是getJSON,还有这样的理由吗?

感谢任何帮助!

1 个答案:

答案 0 :(得分:6)

<强> $。的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,脚本或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()等于$.ajax(),dataType设置为“json”,这意味着如果返回的内容不同于JSON,则最终会出现解析错误。 / p>

所以你几乎是对的,两者几乎相同:)。 $.getJSON()只是更广泛$.ajax()的缩写。