Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery $.getJSON和$.get之间的差异_Jquery_Ajax_Json - Fatal编程技术网

Jquery $.getJSON和$.get之间的差异

Jquery $.getJSON和$.get之间的差异,jquery,ajax,json,Jquery,Ajax,Json,这两个电话真的有区别吗?如果使用getJSON,您仍然必须在url中声明format=json 您可以在$.get()中执行相同的操作,并遍历JSON对象 还是我离这里太远了?我认为文档中已经非常清楚地解释了这一点 使用HTTP GET请求加载远程页面 使用HTTP GET请求加载JSON数据 记住,这些只是.ajax方法的抽象以下两个片段是等效的: $.get("/some/url", {data: "value"}, function(json) { // use json her

这两个电话真的有区别吗?如果使用getJSON,您仍然必须在url中声明
format=json

您可以在
$.get()
中执行相同的操作,并遍历JSON对象


还是我离这里太远了?

我认为文档中已经非常清楚地解释了这一点

使用HTTP GET请求加载远程页面

使用HTTP GET请求加载JSON数据


记住,这些只是.ajax方法的抽象

以下两个片段是等效的:

$.get("/some/url", {data: "value"}, function(json) { 
  // use json here
}, "json")

$.getJSON("/some/url", {data: "value"}, function(json) {
  // use json here
});
说请求是针对
JSON
意味着两件事:

  • jQuery发送一个
    Accept:application/json
  • jQuery解释入站响应,将其转换为JavaScript对象,并将其传递到回调中(因此不必处理eval或其他转换机制)

许多服务器端框架(如Rails)自动检测
Accept
头并适当处理请求。如果使用不同的框架或滚动自己的框架,则可以检查
Accept
标题以检测格式(而不是检查参数)。

美元.getJSOn和美元.get之间的差异在于参数:

  • $.getJSON接受普通对象作为数据,而$.get接受普通对象或字符串
  • $.get具有数据类型参数

  • 因此,将$.get与dataType:JSON一起使用与$.getJSON完全相同。

    您在URL中声明的内容与jQuery无关。也不是所有地点都是如此——当然不是我的一个地点;-)我只是说,您必须在url中声明您正在寻找JSON结果,即使您使用的是getJSON。您也可以在$.get()的url中声明它。只是想知道其中一个做什么,而另一个没有…你实际上已经偏离了轨道。在使用getJSON()方法时,您不必显式地传递数据类型,但在get()方法中,您必须显式地传递数据类型。见上面yehuda的评论。它讲述了整个故事,或者我确实看到你接受了答案。但坦率地说,没有人像我那样直截了当地指出我提到的事实。也许你现在清楚了。太好了!但是仍然可以使用$.get来接收JSON数据,对吗?如果您调用的页面返回一个JSON对象?当然,我想,只要您将'data'参数指定为JSON。如果页面将返回json,为什么不使用getJSON方法呢?同样,这些只是从base.ajax方法简化ajax调用的抽象。他们的存在是为了让事情变得更容易,而不是让事情复杂化!我使用了没有数据参数的$.get,它工作得很好。API文档说数据参数的默认值是“智能猜测”,因此显然jQuery在我的用例中猜测正确;-)我还应该指出,添加Accept header解决方案的原因是为了迎合优雅地处理它的框架,使jQuery和这些框架(例如Rails)之间的通信无缝。