我怎样才能知道哪种方法最适合某种情况?有人能提供一些例子来了解在功能和性能方面的差异吗?
XMLHttpRequest 是一个原始的浏览器对象,jQuery 将它包装成一个更加可用和简化的形式,并且具有跨浏览器一致的功能。
XMLHttpRequest
jQuery.ajax 是 jQuery 中的一个通用 Ajax 请求程序,可以执行任何类型和内容请求。
jQuery.ajax
另一方面,jQuery.get 和 jQuery.post只能发出 GET 和 POST 请求。如果你不知道这些是什么,你应该检查 HTTP 协议和学习一点。在内部,这两个函数使用 jQuery.ajax,但是它们使用特定的设置,与使用 jQuery.ajax相比,您不必为自己设置这些设置,从而简化了 GET 或 POST 请求。GET 和 POST 是最常用的 HTTP 方法(与 DELETE、 PUT、 HEAD 甚至其他很少使用的异域方法相比)。
jQuery.get
jQuery.post
所有 jQuery 函数都在后台使用 XMLHttpRequest对象,但是提供了一些不必自己完成的附加功能。
因此,如果您正在使用 jQuery,我强烈建议您使用 jQuery 功能 只有。完全忘记 XMLHttpRequest。使用合适的 jQuery 请求函数变体,在所有其他情况下使用 $.ajax()。所以不要忘记还有其他的 常用的 jQuery Ajax 相关函数到 $.get(),$.post()和 $.ajax()。您可以对所有的请求使用 $.ajax(),但是您需要编写更多的代码,因为它需要更多的选项来调用它。
$.ajax()
$.get()
$.post()
这就好像你可以给自己买一个汽车引擎,你必须在它周围制造一个带有方向盘、刹车等的整个汽车。.汽车制造商生产完整的汽车,有一个友好的界面(踏板,方向盘等) ,所以你不必做所有自己。
它们每个都使用 XMLHttpRequest。这是浏览器用来发出请求的内容。JQuery 只是一个 JavaScript 库,$. ajax方法用于生成 XMLHttpRequest。
$.Post 和 $只是 $.ajax的速记版本。它们做的事情大致相同,但是使得编写 AJAX 请求变得更快—— $.post发出 HTTP POST 请求,$.get发出 HTTP GET 请求。
$.ajax
$.post
$.get
就 jQuery 方法而言,.post和 .get只是在内部执行 .ajax,它们的目的是抽象出 .ajax的一些不必要选项,并分别提供适合该类型请求的一些默认值。
.post
.get
.ajax
我怀疑这三者之间在性能上有很大的差异。
.ajax方法本身执行一个 XMLHttpRequest,按照 jQuery 的其余部分,它将被大量优化,但是它可能不会像您自己定制整个交互那样高效。.但这就是编写大量代码和编写 jQuery.ajax的区别。
Post 和 jQuery.get 模拟典型的页面加载,也就是说,单击一个提交按钮,它会将您带到一个新页面(或者重新加载同一页面)。发布和获得稍有不同的方式,数据被发送到服务器(关于它的好文章可以找到 给你。
Ajax 和 XMLHttpRequest 是类似于 post 和 get 的页面加载,只是页面不会改变。服务器返回的任何信息都可以由本地 javascript 以任何方式使用,包括修改页面布局。它们通常用于在用户仍然可以导航页面时执行异步工作。这方面的一个很好的例子是通过动态加载数据库值来完成文本字段的自动完成功能。JQuery.ajax 和 XMLHttpRequest 之间的根本区别在于,jQuery.ajax 使用 XMLHttpRequest 来实现相同的效果,但接口更简单。如果您使用 jQuery,我建议您坚持使用 jQuery.ajax。
jQuery.get是 jQuery.ajax的包装器,jQuery.ajax是 XMLHttpRequest 的包装器。
XMLHttpRequest 和 FetchAPI (目前还处于试验阶段)是 DOM 中唯一的,因此应该是最快的。
我看到了很多不再准确的信息,所以我做了一个测试页面,任何人都可以测试版本的版本,哪一个是最好的在任何时候:
Https://jsperf.com/xhr-vs-jquery-ajax-vs-get-vs-fetch
从我今天的测试来看,只有 jQuery 不是一个干净甚至快速的解决方案,我在移动或桌面上的测试结果显示,jQuery 至少比 XHR2慢80% ,如果你使用了太多的 ajax,在移动上加载一个简单的站点需要很多时间。
用法本身也在链接中。
旧的文章。但仍然想回答,一个差异,我面临的工作时与 网络工作者(javascript)
Web 工作者不能有任何 UI 级别的访问,这意味着你不能访问任何 DOM 在 JavaScript 代码中使用 web worker 运行的。在 web-worker 代码中不能访问诸如窗口、文档和父对象等对象。
正如我们所知道的,JQuery库与 HTMLDOM 绑定在一起,允许它存在将违反“无 DOM 访问”规则。这可能有点痛苦,因为诸如 JQuery. ajax,jQuery. post,jQuery. get这样的方法不能用于 Web 工作者。幸运的是,你可以使用 XMLHttpRequest 对象生成 Ajax 请求。