Answers:
XMLHttpRequest
是jQuery包装为更有用和更简化的形式以及跨浏览器一致功能的原始浏览器对象。
jQuery.ajax
是jQuery中的通用Ajax请求者,可以执行任何类型和内容请求。
jQuery.get
而jQuery.post
另一方面只能发出GET和POST请求。如果您不知道这些是什么,则应检查HTTP协议并学一点点。这两个函数在内部使用,jQuery.ajax
但它们使用的是您不必自行设置的特定设置,因此与使用相比,简化了GET或POST请求jQuery.ajax
。无论如何,GET和POST都是最常用的HTTP方法(相比于DELETE,PUT,HEAD甚至其他很少使用的外来符号)。
所有jQuery函数都XMLHttpRequest
在后台使用object,但是提供了您不必自己做的其他功能。
因此,如果您使用的是jQuery,我强烈建议您仅使用jQuery功能。XMLHttpRequest
完全忘了。使用合适的jQuery请求函数变体,并在所有其他情况下使用$.ajax()
。所以,不要忘记还有其他常见的jQuery的Ajax相关的功能来$.get()
,$.post()
和$.ajax()
。好吧,您可以只使用$.ajax()
所有请求,但是您将不得不编写更多代码,因为调用它需要更多选项。
就像您可以购买汽车发动机一样,您必须在汽车周围使用转向,制动器等来制造整车。汽车制造商生产的整车具有友好的界面(踏板,方向盘等)。因此您不必自己做所有事情。
$.post
,$.get
唯一慢的是$.ajax
调用之前的少量代码。但是,如果您直接使用XHR编写自己的例程,则可能会进行一些优化,但可能会出现更多问题。我建议您将自己放在jQuery方面。这将使您的生活更轻松。考虑到异步调用比发出代码要花费更长的时间,您可能会注意到这些调用之间没有明显的区别。
$.ajax
使所有地方的呼叫保持一致。只要您不直接使用XHR,无论哪种方式都很好。
他们每个人都使用XMLHttpRequest。这是浏览器用来发出请求的内容。jQuery只是一个JavaScript库,$ .ajax方法用于生成XMLHttpRequest。
$ .post和$ .get只是的简写版本$.ajax
。它们的作用几乎相同,但是可以更快地编写AJAX请求- $.post
发出HTTP POST请求和$.get
发出HTTP GET请求。
GET
请求将发送在URL字符串的所有数据-其可以通过客户机/服务器(限于stackoverflow.com/questions/2659952/...)。一个POST
请求发送的所有数据的报头,所以URL大小限制不应该是一个问题(除非你真的长的文件和文件夹名称到脚本!)。
GET
。如果你正在寻找送东西(如张贴鸣叫),然后使用POST
,
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%,在移动设备中,加载简单的网站将花费大量时间。
用法本身也在链接中。
jQuery.post和jQuery.get模拟典型的页面加载,也就是说,单击提交按钮,它将带您到新页面(或重新加载同一页面)。发布和获取数据发送到服务器的方式略有不同(有关数据的好文章可以在这里找到。
jQuery.ajax和XMLHttpRequest是类似于post and get的页面加载,只是页面没有变化。服务器返回的任何信息都可以由javascript本地使用,以任何方式使用,包括修改页面布局。它们通常用于执行异步工作,而用户仍可以浏览页面。一个很好的例子就是通过从数据库值动态加载以完成文本字段的自动完成功能。jQuery.ajax和XMLHttpRequest之间的根本区别在于jQuery.ajax使用XMLHttpRequest来实现相同的效果,但界面更简单。如果您使用jQuery,我建议您坚持使用jQuery.ajax。
旧帖子。但仍然想回答,我在与Web Workers(javascript)一起工作时遇到的一个区别
网络工作者无法进行任何UI级访问。这意味着您将无法访问要使用Web Worker运行的JavaScript代码中的任何DOM元素。无法在Web Worker代码中访问诸如窗口,文档和父对象之类的对象。
众所周知,jQuery库与HTML DOM绑定在一起,并允许它违反“无DOM访问”规则。这可能会有些痛苦,因为jQuery.ajax,jQuery.post,jQuery.get之类的方法无法在Web Worker中使用。幸运的是,您可以使用 XMLHttpRequest对象发出Ajax请求。
就jQuery方法而言,.post
并.get
只是在.ajax
内部进行,它们的目的是抽象出不必要的选项,.ajax
并分别提供适合该类型请求的默认值。
我怀疑这3个之间的性能是否有很大差异。
该.ajax
方法本身执行XMLHttpRequest,它将根据jQuery的其余部分进行大量优化,但它的效率可能不如您自己定制整个交互..但这就是编写大量代码或写作jQuery.ajax
。