Ajax使用

一.原生js中使用

 1 //1.创建一个XMLHttpRequest类型的对象
 2 var xhr = new XMLHttpRequest()
 3 //2.确定对象发送方式、协议方法,打开连接
 4 //open()方法第三个参数要求传入的是bool值,能设置请求是否异步执行,默认true,传false同步执行,同步方式执行要先注册事件再调用send,否则readystatechange无法触发
 5 xhr.open('GET', './login.php')
 6 //3.通过连接发送一次请求
 7 xhr.send(null)
 8 //4.响应,判断状态码,指定xhr状态变化事件处理函数
 9 xhr.onreadystatechange = function () {
10 //通过xhr的readyState判断此次请求的响应是否接收完成
11     if (this.readyState === 4) {
12     //通过xhr的responseText获取到响应的响应体
13     console.log(this)
14     }
15 }

二.jquery中使用

 1 $.ajax({
 2     url: './login.php',//请求地址
 3     type: 'post',//请求方法
 4     dataType: 'json',//服务端响应数据类型
 5     data: { id: 1 },//需要传递到服务端的数据
 6     beforeSend: function () {//请求发起之前触发
 7         console.log('before')
 8     },
 9     success: function (data) {//请求成功之后触发
10         console.log(data)
11     },
12     error: function (err) {//请求失败触发
13         console.log(err)
14     },
15     complete: function () {//请求完成触发
16         console.log('completed')
17     }
18 })

还有$.get$.post方法不用写type,方便快捷。

三.Axios

  • 在vue中可以使用vue-resource,但官方不再维护vue-resource,推荐使用axios

    • <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script>

    • npm install vue-resource --save

 1 //在一个Vue实例内使用$http
 2 this.$http.get('/someUrl', [options]).then(successCallback, errorCallback);
 3 this.$http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);
 4 //基于全局Vue对象使用http
 5 Vue.http.get('/someUrl', [options]).then(successCallback, errorCallback);
 6 Vue.http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);
 7 //get例子
 8 this.$http.get("/xxx/xxx.php",{
 9     params:{
10         userId:"101"
11     },
12     headers:{
13         token:"abcd"
14     }
15 }).then(res=>{
16         this.msg=res.data;
17    },error=>{
18         this.msg=error;
19    }
20 });
21 //post例子
22 this.$http.post("/xxx/xxx.php",{userId:"102"},{
23     headers:{
24         access_token:"abc"
25     }
26 }).then(function(res){
27     this.msg=res.data;
28 });
  • axios在vue/react等都可以用,axios引入或安装

    • <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

    • npm install axios --save

 1 //http例子
 2 axios({
 3   url:"/user",
 4   method:"get",//"post"
 5   data:{userId:"101"},//Post
 6   params:{userId:"101"},//Get
 7   headers:{token:"http-test"}
 8 }).then(res=>{this.msg=res.data;})
 9 //get例子
10 axios.get('/user', {
11     params: {
12         ID: 123//也可以直接在URL上添加参数/user?ID=123
13     }
14 })
15 .then(function (response) {
16     console.log(response);
17 })
18 .catch(function (error) {
19     console.log(error);
20 });
21 //post例子
22 axios.post('/user', {
23     firstName: 'Fred', //参数firstName
24     lastName: 'Flintstone' //参数lastName
25 })
26 .then(function (response) {
27     console.log(response);
28 })
29 .catch(function (error) {
30     console.log(error);
31 });

 

原文地址:https://www.cnblogs.com/M-M-Monica/p/10070273.html