原连接:https://zhuanlan.zhihu.com/p/163718536

之前分析面试常被问的跨域问题,另一个面试难题就是ajax原理相关的问题了,今天我们就来solve它。


开篇先来介绍一个之前看过的一篇文章,讲的是如何回答面试中的原理题,我们也可以把以下的这种方法运用到学习前端知识上面。


回答原理题流程:

  1. 如果是英文词汇就先翻译成中文
  2. 一句话描述该技术的用途
  3. 描述该技术的核心概念或运作流程
  4. 口述该技术的代码书写思路
  5. 该技术的优点
  6. 该技术的缺点
  7. 如何弥补缺点

现在我们正式开始了解XMLHTTPRequest对象,顾名思义:是基于XML的HTTP请求。XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信。自从浏览器提供有了XMLHTTPRequest这个接口之后,ajax操作就此诞生。


我们再来说说什么是AJAX,AJAX = Asynchronous JavaScript and XML,翻译为:异步的 JavaScript 和 XML。ajax就是基于浏览器提供的XMLHttpRequest对象来实现的。这下明白他们的关系了吧。


传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。自从有了ajax之后,我们就可以实现异步的加载网页。


什么叫异步?

异步,异嘛,不同的意思,这里也就是指不跟浏览器加载执行网页代码的步伐一致,也就是说在一个网页中需要用户操作来触发执行代码,而不是整个网页代码一次性执行完毕。(这里的用户操作是指在同一个网页下面请求代码执行渲染,而不是让浏览器直接跳转渲染另一个页面)


AJAX 工作原理:

alt


这里面都提到了一个概念XML,那什么是XML呢?

XML 指可扩展标记语言(eXtensible Markup Language)

我们在浏览器中使用XMLHTTPRequest对象在服务器之间通信,传输的数据是使用XML的方式,但最终还是会被转换成json数据格式来被我们使用。