【问题标题】:difference between $.getJSON and $.get$.getJSON 和 $.get 之间的区别
【发布时间】:2009-07-03 12:46:18
【问题描述】:

这两个调用真的有区别吗?如果使用getJSON,还是要在url中声明format=json...

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

或者我离这里很远?

【问题讨论】:

  • 你必须在 URL 中声明的内容与 jQuery 无关。所有网站都不是这种情况——当然不是我的一个 ;-)
  • 我只是说您必须在 url 中声明您正在寻找 JSON 结果,即使您使用的是 getJSON。你也可以在 $.get() 的 url 中声明它。只是想知道一个做什么,另一个不...
  • 你实际上在这里的。在使用 getJSON() 方法时,您 DON'T 必须显式传递数据类型,但在 get() 方法中,您将显式地 HAVE到 。请参阅 yehuda 上面的评论。它讲述了整个故事或访问http://api.jquery.com/jQuery.getJSON/
  • 我确实看到您接受了答案。但坦率地说,没有人指出我像我一样直截了当地提到的事实。也许你现在很清楚了。对你有好处!

标签: jquery ajax json


【解决方案1】:

以下两个sn-ps是等价的:

$.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 标头以检测格式(而不是检查参数)。

【讨论】:

  • 我还应该指出,添加 Accept 标头解决方案的原因是为了迎合能够优雅处理它的框架,使 jQuery 和此类框架(例如 Rails)之间的通信无缝。
【解决方案2】:

我认为文档解释得很清楚!

http://docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype

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

http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback

使用 HTTP GET 请求加载 JSON 数据

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

【讨论】:

  • 但是仍然可以使用 $.get 来接收 JSON 数据,对吧?如果您调用的页面返回 JSON 对象?
  • 当然,我想,只要您将“数据”参数指定为 json。如果页面要返回 json,为什么不直接使用 getJSON 方法呢?同样,这些只是从基本 .ajax 方法简化 ajax 调用的抽象。它们的存在是为了让您的事情变得更容易,而不是让事情变得复杂!
  • 我使用了没有数据参数的 $.get,它工作得很好。 API 文档说 data 参数的默认值是“智能猜测”,因此显然 jQuery 在我的用例中猜测正确;-)
【解决方案3】:

$.getJSOn 和 $.get 的区别在于参数:

  1. $.getJSON 接受纯对象作为数据,而 $.get 接受纯对象或字符串。
  2. $.get 有 dataType 参数。

因此,使用带有 dataType: JSON 的 $.get 与 $.getJSON 的工作方式完全相同。

【讨论】:

    猜你喜欢
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多