封装Ajax

介绍:基于jquery的ajax封装

首先把常量Url提取出来,这里可以多存几个备用(比如测试环境和正式环境),到时候切换环境,直接打开注释,切换一下就ok了


<script>



    const Url = 'http://xxx.xxx.xxx.xxx:8080/xxx/';
    const Url = 'http://yyy.yyy.yyy.yyy:8080/yyy/';

    核心代码如下

    function Ajax(data) {
        var def = $.Deferred();
        var canceled = false;
        if (data.type == 'get') {
            var jqXHR = $.ajax({
                type: "get",
                url: Url + data.url,
                data: {},
                xhrFields: {withCredentials: true},
                crossDomain: true,
                contentType: "application/json",
                datatype: "json",
                error: function (xhr, status, error) {
                    if (canceled) return;
                    var data = {
                        result: 4,
                        message: error,
                        status: status
                    };
                    console.error("调用接口:[" + this.url + "]报错;状态码:[" + xhr.status + "];错误信息:[" + error + "]");
                    def.reject(data);
                },
                success: function (data) {
                    if (canceled) return;
                    def.resolve(data);
                }
            });
            var promise = def.promise();
            var then = promise.then;
            var thenWrapper = function () {
                var promise = then.apply(this, arguments);
                promise.cancel = function () {
                    canceled = true;
                    jqXHR.abort();
                };
                promise.then = thenWrapper;
                return promise;
            };
            promise.then = thenWrapper;
            return promise;
        } else if (data.type == 'post') {
            var saveData = JSON.stringify(data.data);
            var jqXHR = $.ajax({
                type: "post",
                url: Url + data.url,
                data: saveData,
                xhrFields: {withCredentials: true},
                crossDomain: true,
                contentType: "application/json",
                datatype: "json",
                error: function (xhr, status, error) {
                    if (canceled) return;
                    var data = {
                        result: 4,
                        message: error,
                        status: status
                    };
                    console.error("调用接口:[" + this.url + "]报错;状态码:[" + xhr.status + "];错误信息:[" + error + "]");
                    def.reject(data);
                },
                success: function (data) {
                    if (canceled) return;
                    def.resolve(data);
                }
            });
            var promise = def.promise();
            var then = promise.then;
            var thenWrapper = function () {
                var promise = then.apply(this, arguments);
                promise.cancel = function () {
                    canceled = true;
                    jqXHR.abort();
                };
                promise.then = thenWrapper;
                return promise;
            };
            promise.then = thenWrapper;
            return promise;
        }
    }

    get请求

    var data = {
            '参数1''1',
            '参数2''2',
            '参数3''3'
    }
    Ajax({
        type: 'get',
        url: 'xxx/xxx/xxx?' + qs(data)
    }).then(function(res){
        console.log(res);
        //...
    })
    //URL拼接字符串
    function qs(data) {
        var str = '';
        for (var k in data) {
            if (!data[k]) {
                data[k] = '';
            }
            str += k + '=' + data[k] + '&';
        }
        return str.slice(0, -1)
    }

    post请求

    var data = {
        type: 'post',
        url: 'xxx/xxx/xxx',
        data: {
            '参数1''1',
            '参数2''2',
            '参数3''3'
    }
    }
    Ajax(data).then(function(res){
        console.log(res);
        //...
    })
</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值