ajax原型用$.extend()扩展后,扩展的请求头部没有加上。

ajax原型
$('#createTableData').on('click','#delete',function () {

var dicTypeId=$(this).parents('tr').find('td.hidden').html();
layer.confirm('您确定要删除选中的数据吗?', {
    btn: ['确定','取消'] ,//按钮
    area:['346px','180px'], //宽高
    title:['提示',true], //标题
    closeBtn:false,
}, function(){
    $.ajax({
        url: addr +"/setting/dict/"+dicTypeId,
        type: 'DELETE',
        contentType:"application/json",
        success:function(data){
            console.log(data);
            layer.msg('删除成功',{
                icon: 1,
                time:1000,
                shade: 0.3
            });
            getData(1,1,1);
        }
    })
});

})

要扩展的部分:
var _ajax = $.ajax;
$.extend({

ajax:function (options) {
    options.headers=(function () {
        var tokenId  = location.href.split("?")[1];
        console.log(tokenId)
        if(!tokenId) {
            return null;
        }
        return {'Authorization':localStorage.getItem(tokenId)}
    })();
    options.error = function () {
        location.href="login.html";
    }
    _ajax(options);
}

})

(如果把原型和扩展代码里面的ajax,都改成其他不是ajax的名字就对了,
var _ajax = $.ajax;这里的ajax除外)

阅读 2.4k
1 个回答

没看明白你想要干什么,如果是要monkey patch一下jquery.ajax方法,参考func-wrapper,可以引用jquery之后加上下面这段代码:

function wrap(target, name, wrapper) {
    if (!target) {
        return;
    }
    if (target._wrapped) {
        return;
    }
    if (typeof wrapper !== 'function') {
        return;
    }
    var original = target[name];
    if (!original) {
        return;
    }
    var wrapped = wrapper(original);
    wrapped && (wrapped._wrapped = true);
    target[name] = wrapped;
    return wrapped;
}

wrap($, 'ajax', function(ajax) {
    return function(options) {
        if (options) {
            options.headers = (function() {
                var tokenId = location.href.split("?")[1];
                console.log(tokenId)
                if (!tokenId) {
                    return null;
                }
                return {
                    'Authorization': localStorage.getItem(tokenId)
                }
            })();
            options.error = function() {
                location.href = "login.html";
            }
        }
        return ajax.apply(this, arguments);
    }
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题