干货,直接上代码:
<script>
(function ($) {
//备份jquery的ajax方法
var _ajax = $.ajax;
//重写jquery的ajax方法
$.ajax = function (opt) {
//备份opt中error和success方法
var fn = {
error: function (XMLHttpRequest, textStatus, errorThrown) { },
success: function (data, textStatus) { }
}
var sessionuserid = "";
if (typeof parent.getSessionID == "function") {
sessionuserid = parent.getSessionID();
}
if (opt.data && !opt.extraData) { //普通ajax提交
opt.data.sessionuserid = sessionuserid;
fn.data = opt.data;
} else if (opt.data && opt.extraData) { //ajaxSubmit提交
opt.data = "sessionuserid=" + sessionuserid + "&" + opt.data;
opt.extraData.sessionuserid = sessionuserid;
}
if (opt.error) {
fn.error = opt.error;
}
if (opt.success) {
fn.success = opt.success;
}
//扩展增强处理
var _opt = $.extend(opt, {
error: function (XMLHttpRequest, textStatus, errorThrown) {
//错误方法增强处理
fn.error(XMLHttpRequest, textStatus, errorThrown);
},
success: function (data, textStatus) {
//成功回调方法增强处理
fn.success(data, textStatus);
}
});
_ajax(_opt);
};
})(jQuery);
</script>以上代码主要部分摘自网上别的大佬的博客,由于记不清是哪位的了,这里就不帖原链接了,自己搜一下可以得到。
这里重写逻辑我分了两种情况,一种是普通ajax上传逻辑的参数处理,直接将fn的data属性重写即可,网上大部分博文的逻辑都是这样,这一步没有问题。
但是,在测试过程中,我发现,对于上传文件部分的ajax提交逻辑,我采用的是ajaxSubmit上传文件方式;在这种方式中,上面提到的重写fn.data属性,不奏效。
经过多次测试后,发现另一种写法即重写opt.extraData属性即可为ajaxSubmit方式添加携带参数。
由于这个属性在网上没有搜到相关资料,故以此记录,以便他人取用,希望能给各位带来帮助。
版权声明:本文为qq_42026964原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。