原生ajax写法

ajax1.0,ie9及以下,ie10+支持ajax2.0

ajax2.0比ajax1.0:

1.多了FormData对象,xhr.send(formData)  //不能用GET

2.文件上传,文件上传进度 //把<input type="file" />对象set入formData,xhr.upload.onprogress=ev=>{ev.loaded/evtotal}

3.CORS跨域双验证 // 请求头多了ORIGIN,响应头带上"Access-Control-Allow-Origin"

1.0写法,分四步:

1.创建xhr对象

let xhr = new XMLHttpRequest();

2. 设置超时时间(毫秒)

// 2s超时
xhr.timeout = 2000;

3.建立连接

// 方法 URL 是否异步
xhr.open('GET','http://www.qq.com',true);

4.设置http头

//可以设置某些http头信息
xhr.setRequestHeader('Expires', 'Mon, 20 Jul 2029 23:00:00 GMT')
//甚至是一些自定义的头部
xhr.setRequestHeader('amie', 'xxxxxxx')
//但是诸如User-Agent、Referer浏览器是禁止设置的

5.发送请求

//send可以send任意数据类型
xhr.send('内容');

6.接收响应

xhr.onreadystatechange= ()=>{
     if(xhr.readyState == 4){
        //请求完成了
        if((xhr.status>=200&&xhr.status<300)||xhr.status==304){
            //请求成功了,拿到返回的数据
            var data = xhr.responseText;
        }          
    }
}

 7.超时和错误事件

xhr.ontimeout = xhr.onerror = err => {
    this.$fui.popup({
        message: '连通性测试失败',
        type: 'error',
    });
    this.loading = false;
};

 

posted @ 2017-11-14 10:29  张啊咩  阅读(1566)  评论(0编辑  收藏  举报