vue中使用axios简单的封装post请求,并使用返回的数据

发现在学习vue的时候,不论你用的是哪种编程工具,是否使用打包和脚手架,都需要手工的多练习,只能说步步是坑.

在使用的过程中一定要多按F12,多写console.log来看输出的值是什么,非常有助于排错和知道返回的是啥东西

1、在vue的data中定义一个数组pingxuanren,用于存放从服务器端请求来的数据

data:{
    pingxuanren:[],     //需要评分的人员信息  
    userinfo:[],        //用户自己的身份信息
    userxx:''
},

 

2、然后简单的封装一下axios的post请求,我也是从网上看了很多,抄了一下,自己并不会写。

//封装一下axios的POST请求
axiosPost:function(url,params){
    return new Promise((resolve, reject) => {
    axios({
        url: url,
        method: 'post',
        data: params,
        transformRequest: [function(data) {
           let ret = ''
           for(let it in data) {
              ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
           }
           return ret
        }],
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
   })
   .then(res=>{
       resolve(res.data);
   })
  });
},

上面的直接复制就能用,返回的数据存储在Promise对像中,只要知道数据返回了就行了.

 

3、具体的使用中需要注意params的参数,一定要写.then,返回的数据就是res,直接用就可以了.

 1  //返回被评分人的信息列表
 2  getyunangong:function(){
 3     var yhm=localStorage.getItem('yhm');
 4      5     var url='test.ashx?method=yuangong';
 6     var params={yhm_:yhm};
 7     this.axiosPost(url,params)
 8     .then(res=>{
 9         this.pingxuanren=res;
10     })
11  },

4、pingxueren数组中就已经有数组了,可以读取绑定到页面上了。

再看看原来的写法,乱的一批,每有不同的请求都得重写一次。

axios({
                            url: 'test.ashx?method=savedata',
                            method: 'post',
                            data: {
                                title_: _title,
                                fen_: mes,
                                yhm:localStorage.getItem('yhm'),
                                tofen:localStorage.getItem('tofen'),
                            },
                            transformRequest: [function(data) {
                                let ret = ''
                                for(let it in data) {
                                    ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
                                }
                                return ret
                            }],
                            headers: {
                                'Content-Type': 'application/x-www-form-urlencoded'
                            }
                        })
                        .then(function (response) {
                            var info=response.data;
                            //console.log(info);
                            if (info===401){
                                alert("保存数据时出错了!");
                            }else{
                                alert("保存成功,点击'确定'将跳转至主评分页面!");
                                localStorage.removeItem('tofen');
                                window.location.href="home.htm";

                            }

 

  

posted @ 2020-04-08 11:51  wjbych  阅读(5679)  评论(0编辑  收藏  举报