1

我正在尝试理解 AJAX 和 JSON,但我不确定我是否明白,有些方法和函数正在做同样的事情......

您必须$.getJSON从服务器检索 JSON 格式的数据,并且您有$.ajax+ $.post+ $.get+load()将数据数据发送到服务器?

我可以使用所有这些方法来发送 JSON 数据吗?

真的我很困惑!帮我解决这个问题。

4

2 回答 2

2

AJAX 请求本质上是一个 HTTP 请求。这是用于Web 上所有内容的相同协议(可以说,如果它不是 HTTP,则它不是 Web)- 加载页面、页面上的图像、CSS 和 JS 包括、提交的表单等,等等

因此,它几乎继承了 HTTP 的所有灵活性,这意味着像jQuery.ajax这样的通用函数最终会变得非常复杂,有很多您通常不需要担心的选项。这导致了您提到的速记方法,它捆绑了常用的选项和功能集。

您可能想要改变的事情包括:

  • 请求的“方法”:GET 或 POST(或不太常见的方法,如 HEAD、PUT、DELETE...)。GET 请求是最简单的:请求这个 URL,给我它的内容;GET 请求的参数被推送到 URL 的“查询字符串”中。POST 请求是在普通页面上提交更大的表单的方式:参数作为与 URL 和控制标头分开的数据体传递;对于 AJAX 请求,这通常有助于将 XML 或 JSON 块发送URL。这是一个非常广泛的概述,两者之间在行为和含义上还有更多区别。
  • 您在响应中想要的“内容类型”(对于 POST 请求,您正在发送的数据)。这不仅告诉服务器和浏览器它正在处理什么数据,确保它能够成功传递它,它还可以给 jQuery(或任何库)提示下一步该做什么:如果调用返回 XML,你将可能想立即将其作为 DOM 进行操作;如果是 JSON,您需要将其解析为 JS 对象。
  • 数据返回后您想要做什么。我已经提到过解析 JSON 或 XML,但是如果您的响应实际上是您想要直接注入父页面的 HTML 块怎么办?显然,您可以在回调函数中自己执行此操作,但 jQuery 再次包含.load()形式的简写形式。

以上所有这些都可以使用 jQuery.ajax,但是您必须记住参数,即使您一次又一次地陷入相同的情况,所以大部分时间您将使用其中的任何一个速记当时适合您的需求。

于 2013-07-04T20:13:43.967 回答
2

所有这些只是调用函数的简写$.ajax

  • load用于检索 HTML 并将其一次性写入 DOM。你想加载 JSON。
  • getgetJSON使用GET不适合发送 JSON 数据的请求。
  • post发出POST请求,但不允许您选择contentType发送的数据

要发送 JSON,您应该使用$.ajax带有许多选项的函数,请参阅使用 jQuery 发送 JSON 数据

于 2013-07-04T19:44:49.730 回答