XMLHttpRequest,jQuery.ajax,jQuery.post,jQuery.get之间有什么区别

Rod*_*ues 116 ajax jquery xmlhttprequest

如何找出最适合某种情况的方法?任何人都可以提供一些例子来了解功能和性能方面的差异吗?

Rob*_*nik 140

  • XMLHttpRequest 是jQuery包装成更加可用和简化的表单以及跨浏览器一致功能的原始浏览器对象.

  • jQuery.ajax 是jQuery中的一般Ajax请求者,可以执行任何类型和内容请求.

  • jQuery.getjQuery.post在另一方面他只能发出GET和POST请求.如果你不知道它们是什么,你应该检查HTTP协议并学习一点.在内部这两个函数使用,jQuery.ajax但它们使用您没有自己设置的特定设置,因此与使用相比简化了GET或POST请求jQuery.ajax.无论如何,GET和POST是最常用的HTTP方法(与DELETE,PUT,HEAD甚至其他很少使用的exotics相比).

所有jQuery函数都XMLHttpRequest在后台使用对象,但提供了您不必自己执行的其他功能.

用法

因此,如果您使用的是jQuery,我强烈建议您使用jQuery功能.XMLHttpRequest完全忘掉了.使用合适的jQuery请求函数变体,并在所有其他情况下使用$.ajax().所以,不要忘记还有其他常见的jQuery的Ajax相关的功能$.get(),$.post()$.ajax().那么你可以只用你$.ajax()的所有请求,但你必须编写更多的代码,因为它需要更多的选项来调用它.

比喻

这就像你可以自己买一辆汽车发动机,你必须用它来制造整车,转向,刹车等......汽车制造商生产完整的汽车,具有友好的界面(踏板,方向盘等)所以你不必自己动手.

  • @Rodrigues:不是真的。如果您想到“$.post”和“$.get”,唯一较慢的就是调用“$.ajax”之前的少量代码。但是,如果您直接使用 XHR 编写自己的例程,事情可能会得到一些优化,但可能会出现更多错误。我建议你保持 jQuery 的立场。它会让你的生活更轻松。考虑到异步调用比发出它的代码花费的时间要长得多,您可能会注意到这些调用之间没有明显的区别。 (2认同)

Jon*_*ter 26

他们每个人都使用XMLHttpRequest.这是浏览器用于发出请求的内容.jQuery只是一个JavaScript库,$ .ajax方法用于创建XMLHttpRequest.

$ .post$ .get只是简写版的$.ajax.它们几乎完全相同,但可以更快地编写AJAX请求 - $.post发出HTTP POST请求并$.get发出HTTP GET请求.


Sir*_*ius 5

jQuery.get是的包装jQuery.ajax,这是XMLHttpRequest的包装。

XMLHttpRequest和Fetch API(目前处于实验阶段)是DOM中唯一的,因此应该是最快的。

我看到了很多不再准确的信息,因此我创建了一个测试页,任何人都可以随时从最好的版本中测试版本:

https://jsperf.com/xhr-vs-jquery-ajax-vs-get-vs-fetch

从我今天的测试中可以看出,只有jQuery并不是一种干净甚至快速的解决方案,对于我来说,在移动设备或台式机上的结果表明,如果您使用过多的Ajax,则jQuery至少比XHR2慢80%,在移动设备中,加载一个简单的网站将花费大量时间。

用法本身也在链接中。