重写ajax(包括ajaxSubmit)提交方法,携带默认参数

干货,直接上代码:

<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版权协议,转载请附上原文出处链接和本声明。