AJAX

1.AJAXAsynchronous JavaScript and XML

JavaScript执行异步网络请求

Web的运作原理:一次HTTP请求对应一个页面 

AJAX使我们可以通过JavaScript直接通过JavaScript获取最新的内容(数据),而不用刷新整个页面

简单的说:AJAX就是浏览器提供的一套API,可以通过JavaScript调用,从而实现通过代码控制请求与响应,实现网络编程。

2.用法

栗子:

//使用AJAX的过程可以类比平时访问网页的过程

//1.创建一个XMLHttpRequest对象 ->相当于打开了一个浏览器
var xhr = new XMLHttpRequest();
//2.打开与一个URL的连接 ->相当于在地址栏输入网址
//open(type,url/file,asyns(是否异步,默认为true)) 
xhr.open('GET','http://47.101.189.79/web_json/test.json',true);
//3.发送请求 ->相当于点击回车访问网页
xhr.send();
//4.指定状态码变化函数
xhr.onreadystatechange = function(){
    if(this.status == 200 && this.readyState == 4){
        console.log('ok');
    }
}

 

在第四步中,处了onreadystatechange方式外,还可以使用onload,区别:onload不能监听readyState状态码2和3

readyState状态码与HTTP常用状态码:

readyState状态码

0:请求未初始化
1:服务器连接已建立
2:请求已接收
3:请求处理中
4:请求已完成,且响应已就绪

HTTP状态码

200:服务器成功返回网页
404:请求的网页不存在
503:服务器暂时不可用

XMLHttpRequest对象:本质上XMLHttpRequest就是JavaScript在Web平台上发送HTTP请求的手段,所以我们发送的请求依然是HTTP请求。

1.GET请求与POST请求

 

区别:

 

1.get请求需注意缓存问题,post请求不需担心这个问题

 

2.post请求必须设置Content-Type值为application/x-form-www-urlencoded

 

3.发送请求时,因为get请求的参数都在url里,所以send函数发送的参数为null,而post请求在使用send方法时,却需赋予其参数

 

 

2.同步与异步

xhr.opne()的第三个参数要求传入一个布尔值,作用是设置本次的请求是否采用异步方式执行,默认问true,需要同步则传入false

如果是采用同步方式执行,代码会卡在xhr.send()这一步,所以不管是同步还是异步,一定要在send()事件之前先注册redystatechange

 

3.数据响应格式

XML:一种数据描述手段,现在基本不用,数据冗余太多

JSON:也是一种数据描述手段,服务端采用JSON格式返回数据,客户端按照JAON格式解析数据。

 3.跨域

同源策略:

是浏览器的一种安全策略,同源是指域名要相同(www.example.com和api.example.com不同);

协议要相同(http与https不同);端口号要相同(默认是80,和8080不同)。

CORS(Cross Origin Resource Share,跨域资源共享 )

 

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源(协议 + 域名 + 端口)服务器,

发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

 

CORS需要浏览器和服务器同时支持。它的通信过程,都是浏览器自动完成,不需要用户参与。

对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,

就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。
因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信

 

posted @ 2019-01-03 19:59  水星丶  阅读(148)  评论(0编辑  收藏  举报