从一开始我想提及我知道THIS问题与我的问题相同,但该用户询问了他遇到的问题。
我对这些差异的质疑更具主观性。我正在学习使用Jquery和Ajax,我遇到了这两种方法。现在对他来说,他们似乎都是这样做的。 (从指定的URL获取原始JSON数据)但我确定存在更大的差异。
我也注意到人们倾向于使用$ .ajax而不是getJSON,还有这样的理由吗?
感谢任何帮助!
答案 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()
的缩写。