节选自:https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434499861493e7c35be5e0864769a2c06afb4754acc6000

1. AJAX不是JavaScript的规范,是:Asynchronous JavaScript and XML,意思是用JavaScript执行异步网络请求。

一个Form的请求,一旦用户点击“Submit”按钮,表单开始提交,浏览器就会刷新页面,然后在新页面中告诉你操作成功还是失败了。如果网络太慢或其他原因,就会得到404页面。

即web的运行原理:一次HTTP请求对应一个页面。

如果要让用户留在当前页面,同时发出HTTP请求,就必须用JavaScript发送这个新请求,接收到数据后,再用JavaScript更新页面,这样一来,用户就感觉自己仍然停留在当前页面,但是数据却可以不断地更新。

最早大规模使用AJAX的就是Gmail,Gmail的页面在首次加载后,剩下的所有数据都依赖于AJAX来更新。

2. AJAX请求是异步执行的,即通过回调函数获得响应。在现代浏览器上写AJAX主要依靠XMLHttpRequest对象。对于低版本的IE,需要换一个ActiveXObject对象。

3. // 发送请求:

request.open('GET', '/api/categories');
request.send();

  XMLHttpRequest对象的open()方法有3个参数,第一个参数指定为GET还是POST,第二个参数指定URL地址,第三个参数指定是否使用异步,默认是true。最后调用send()方法才真正发送请求。GET请求不需要参数,POST请求需要把body部分以字符串或者FormData对象传进去。

4. 浏览器存在同源策略。默认情况下,JavaScript发送AJAX请求时,URL的域名必须和当前页面完全一致(包括域名/协议(HTTP和HTTPS不同)/端口)。JavaScript有多种方法请求外域的URL。其中一种是在同源域名下假设一个代理服务器来转发,JavaScript负责把请求发送到代理服务器:Proxy...

代理服务器再把结果返回,这样就遵守了浏览器的同源策略。这种方式麻烦之处在于需要服务器端额外做开发。