【问题标题】:Understanding the difference between semantics of AJAX vs post/get?了解 AJAX 语义与 post/get 之间的区别?
【发布时间】:2014-10-02 14:52:45
【问题描述】:

我试图理解“AJAX”一词的实际含义。我确实理解它代表 Async JAvascript over Xml。而且我知道它不一定需要 XML(例如,我们可以使用 json)。我了解 AJAX 是一种仅更新部分网页而不需要对服务器进行完整发布/刷新的范例。

我的问题是语义之一:如果我创建一个带有按钮的网页,当按下该按钮时将调用 jQuery.Get() 到服务器以部分刷新页面 - 这是否意味着我正在使用 AJAX?

或者,AJAX 是非常具体的一组 Microsoft 对象/技术吗?

感谢您的澄清

【问题讨论】:

  • Ajax 是一种工具。是的,您正在使用它,除非您使用的是 iframe。
  • 查看 xmlhttprequest (en.wikipedia.org/wiki/XMLHttpRequest)
  • 其实代表Asynchronous JavaScript and XML
  • 任何时候你使用 JavaScript 来发出一个 HTTP 请求,你就是在使用 Ajax,这是用来描述使用各种实现的术语XMLHttpRequest 对象。 (WebSockets 是唯一的例外)
  • @LcSalazar 为什么这种区别很重要?为什么在您的答案中将 HTML 视为其中的一部分? HTML 只是它可以传输的另一种数据结构,类似于 json、text、xml、base64 等。最终,所有内容都作为带有附加内容类型的纯文本传输。

标签: javascript jquery ajax


【解决方案1】:

Jquery .get() 和 .post() 都是 .ajax() 包装器,顾名思义,.get() 使用 type: "GET" 和 .post() 在 ajax 调用中使用 type: "POST"。
所以是的,当使用 jQuery .get() 和 .post() 时,您使用的是 .ajax() 简化版本。 .ajax() 也是 JS XMLHttpRequest 的简单包装器(就像整个 jQuery 一样)。
所以最后你只使用了 JS。

【讨论】:

    【解决方案2】:

    如果用户点击一个按钮并且浏览器发出请求并将当前页面的全部内容替换为另一个页面,那么这不是 AJAX。

    另一方面,如果浏览器加载一个页面,然后提交由事件触发的后续 HTTP 请求,然后导致页面更改内容或设计,那么 是 AJAX。哪个浏览器都没有关系。

    AJAX 使用XMLHttpRequest 发送请求,并且通常使用响应来对页面进行更改。 jQuery.get()(和 jQuery.post() 等)只是一个包装器,它使 AJAX 更易于使用,并且在不同浏览器之间更加一致。

    另请参阅: how does an Ajax request differ from a normal browser request?

    【讨论】:

      【解决方案3】:

      是的。您正在使用 AJAX。 jQuery.get 是以下的简写:

      $.ajax({
        url: url,
        data: data,
        success: success,
        dataType: dataType
      });
      

      http://api.jquery.com/jquery.get/

      【讨论】:

        【解决方案4】:

        AJAX 实际上是一个术语,适用于 HTML、Javascript 等组合技术的使用,特别是 xmlHttpRequest 对象。

        这个(xmlHttpRequest)实际上是AJAX方法的核心,因为它是一种从URL获取数据而不刷新整个页面的方法。每个 AJAX 调用都使用 xmlHttpRequest 对象。

        它不受 JQuery 约束。事实上,与大多数框架一样,JQuery 旨在简化 javascript 方法。当您使用 JQuery 的$.ajax() 或$.get() 甚至$.post() 时,实际上是在后台实例化核心 xmlHttpRequest 并执行请求。

        这些方法只是简化器,因此您不必处理发出 http 异步请求的所有参数和参数...

        【讨论】:

          猜你喜欢
          • 2012-09-30
          • 2021-03-11
          • 2011-02-20
          • 2012-06-21
          • 1970-01-01
          • 2016-08-17
          • 1970-01-01
          • 2023-01-02
          • 2013-07-02
          相关资源
          最近更新 更多