使用XMLHttpRequest是使用AJAX的唯一方法吗?



我认为google.com使用AJAX,但是当我查看google.com的源代码时,我没有找到"XMLHttpRequest"

我也认为phpMyAdmin使用AJAX,但当我看了phpMyAdmin的源代码,我没有找到"XMLHttpRequest"

那么google.com和phpMyAdmin如何使用AJAX而不使用XMLHttpRequest?他们可能在使用一个库,而这个库使用XMLHttpRequest?

Ajax是一个通用术语,意思是"不离开页面就从JavaScript发出HTTP请求"。有许多方法可以做到这一点,其中一些方法比其他方法更有争议。

  • XMLHttpRequest是经典方法。
  • Fetch是一种现代的方法,它有一些优点(比如基于promise的API),但缺乏XHR所具有的一些特性(特别是上传进度监控)。JSONP通过在页面中注入<script>元素来工作,该元素在加载时调用回调。这是一种绕过同源策略的黑客,具有一定的安全风险,并已被CORS取代。
  • 注入任何类型的元素来访问远程URL(比如图像),可以让你发出HTTP请求(但不能读取响应)。
  • 看起来你也可以在Web Assembly中处理HTTP请求。

许多库将它们自己封装在这些不同的api中。

回答你关于google.com是否使用XMLHttpRequest的问题,答案是肯定的。

使用Chrome浏览器,打开开发工具并进入网络选项卡。然后,在网页的搜索框中,键入一个字母,就像你要进行网络搜索一样。然后Google向服务器发送一个Ajax XMLHttpRequest,根据你输入的字母获得自动完成建议。

我输入了字母"a",这导致了几个请求,其中一个是一个以"search?q=a"开头的url。这可以从"名称"中看出。列。右边是一列"type",它显示该请求是一个XHR请求(这意味着它是通过XMLHttpRequest发出的)——获取请求将具有"fetch"作为这里的值)。再右边是"Initiator"列,它引用了发起网络请求的Javascript。

相关内容

  • 没有找到相关文章

最新更新