0

0

Vue封装ajax的代码示例详解

不言

不言

发布时间:2018-12-11 09:55:28

|

2636人浏览过

|

来源于segmentfault

转载

本篇文章给大家带来的内容是关于vue封装ajax的代码示例详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

HTML文件:




    
    Document


    
{{ msg }}

JS文件:

PHP 网络编程技术与实例(曹衍龙)
PHP 网络编程技术与实例(曹衍龙)

PHP网络编程技术详解由浅入深,全面、系统地介绍了PHP开发技术,并提供了大量实例,供读者实战演练。另外,笔者专门为本书录制了相应的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码一起收录于配书光盘中。本书共分4篇。第1篇是PHP准备篇,介绍了PHP的优势、开发环境及安装;第2篇是PHP基础篇,介绍了PHP中的常量与变量、运算符与表达式、流程控制以及函数;第3篇是进阶篇,介绍

下载
/*
* 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"
    }
]

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

10

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

15

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3.7万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.2万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号