您好,欢迎访问一九零五行业门户网

Vue封装ajax的代码示例详解

本篇文章给大家带来的内容是关于vue封装ajax的代码示例详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
html文件:
<!doctype html><html><head>    <meta charset="utf-8">    <title>document</title></head><body>    <div id="app">        <button @click="getinfo">点击获取信息</button>        <span>{{ msg }}</span>    </div>    <script src="vue.js"></script>    <script src="vue-ajax.js"></script>    <script>        var vm=new vue({            el: #app,            data: {                msg: ,            },            methods: {                getinfo: function (){                    var self=this;                    this.ajax.get(1.json,{                        tel: 123456,                        address: 杭州                    },function (data){                        self.msg=data[1].name                    },json);                }            }        })    </script></body></html>
js文件:
/** ajax封装:* 1. 引入文件* 2. new vue().ajax.get(url,data,fn,ojson), 或 new vue().ajax.post(url,data,fn,ojson)*     url: 需要获取数据的文件地址 (string)*     data: 需要发送的信息 (可省略) (obj)*     fn: 获取信息后的回调函数,接收到的返回值为data (function)*     ojson: 是否需要转换为json格式 (可省略) (设置为 json)** 3. new vue().ajax.get().cancel(): 取消异步请求* 4. new vue().ajax.json(str): 可转化json格式字符串**/vue.prototype.ajax={    //添加url传送信息    addurl: function (url,obj){        //如果省略url,则为post请求,令obj为url,令url为null        if(arguments.length==1){            obj=url;            url=null;        }        //url不为空(get请求: 设置url信息)        if(!!url){            for(var k in obj){                url += (url.indexof(?)==-1 ? ? : &);                url+=encodeuricomponent(k)+ = +encodeuricomponent(obj[k]);            }        }else{            //post请求(设置data信息)            url=;            for(var k in obj){                url+=encodeuricomponent(k)+ = +encodeuricomponent(obj[k]);                url+=&;            }            //删除最后一个&            var arr=url.split();            arr.pop();            url=arr.join();        }        //返回拼接好的信息        return url;    },    get: function (url,data,fn,ojson){        this.xhr=new xmlhttprequest();        //省略data时,即不发送数据        if(typeof data ==function){            ojson=fn;            fn=data;            data={};        }        //合并url和data信息        url=this.addurl(url,data)        //是否异步发送        this.xhr.open(get,url,true);        this.xhr.send(null);        //当请求完成之后调用回调函数返回数据        this.success(fn,ojson);        //链式编程        return this;    },    post: function (url,data,fn,ojson){        this.xhr=new xmlhttprequest();        //省略data时,即不发送数据        if(typeof data ==function){            ojson=fn;            fn=data;            data={};        }        //合并data信息        data=this.addurl(data);        //是否异步发送        this.xhr.open(post,url,true);        this.xhr.setrequestheader(content-type, application/x-www-form-urlencoded);        this.xhr.send(data);        //当请求完成之后调用回调函数返回数据        this.success(fn,ojson);        //链式编程        return this;    },    //字符串转换json    json: function (str){        return (new function(return  + str))();     },    success: function (fn,ojson){        //当请求完成之后调用回调函数返回数据        var self=this;        this.xhr.onreadystatechange=function (){            var odata;            if(self.xhr.readystate == 4){                if((self.xhr.status>=200 && self.xhr.status<300) || self.xhr.status == 304){                    odata=self.xhr.responsetext;                    //若为json则转化json格式                    if(ojson===json){                        odata=self.json(odata);                    }                    fn(odata);                }else{                    odata=request was unsuccessful: +self.xhr.status;                    fn(odata);                }            }        }    },    //取消异步请求    cancel: function (){        this.xhr.abort();        return this;    }}
后台获取或者前端构造的数据结构:
[    {        name: 张三,        age: 18,        sex: man    },    {        name: 李四,        age: 20,        sex: woman    },    {        name: 王五,        age: 22,        sex: man    }]
以上就是vue封装ajax的代码示例详解的详细内容。
其它类似信息

推荐信息