首页 > 其他分享 >Dcat-Admin改写ajax实现请求过滤同名参数

Dcat-Admin改写ajax实现请求过滤同名参数

时间:2023-03-17 11:13:29浏览次数:54  
标签:opt body Admin data url ajax Dcat query config

//方案一
Admin::script(
		<<<JS
(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();
                // }
                let query_arr = opt.data.split("&");
                let result = {};
                query_arr.map(function(value) {
                    let query = value.split("=");
                    result[query[0]] = query[1];
                })
                opt.data = '';
                for (let key in result) {
                    opt.data += key+'='+result[key]+'&';
                }
                opt.data = opt.data.substr(0, opt.data.length - 1);
                console.log(opt.data)
                if (opt.data && !opt.extraData) {   //普通ajax提交
                    // opt.data.sessionuserid = sessionuserid;
                   console.log('===================ajax=====>>>>>>>'+opt.data)
                    fn.data = opt.data;
                } else if (opt.data && opt.extraData) { //ajaxSubmit提交
                    // opt.data = "sessionuserid=" + sessionuserid + "&" + opt.data;
                   // console.log('===================ajaxSubmit=====>>>>>>>'+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);
JS
        );

//方案二:

Admin::js('js/ajaxhook.min.js');
Admin::script(
    <<<JS
//启用前必须销毁,否则报错
ah.unProxy();
ah.proxy({
            //请求发起前进入
            onRequest: (config, handler) => {
                // console.log(config.url)
                console.log(config)
                if(config.body == null){
                    if (config.url.indexOf('&') >0) {
                        let url_arr = config.url.split("?");
                        config.url = url_arr[0]+'?'+format_query(url_arr[1]);
                    }
                }else{
                  if ((typeof config.body=='string') && config.body.constructor==String && config.body.indexOf('&') >0) {
                      config.body = format_query(config.body);
                  }
                }
                handler.next(config);
            },
            //请求发生错误时进入,比如超时;注意,不包括http状态码错误,如404仍然会认为请求成功
            one rror: (err, handler) => {
                handler.next(err)
            },
            //请求成功后进入
            onResponse: (response, handler) => {
                handler.next(response)
            }
        })

        function format_query(s) {
               let query_arr = s.split("&");
               let result = {};
               query_arr.map(function(value) {
                   let query = value.split("=");
                   result[query[0]] = query[1];
               })
               s = '';
               for (let key in result) {
                   s += key+'='+result[key]+'&';
               }
               return s.substr(0, s.length - 1);
        }
JS
);

标签:opt,body,Admin,data,url,ajax,Dcat,query,config
From: https://www.cnblogs.com/imsugar/p/17225962.html

相关文章

  • ajax
    JSON1、初识JSONJSON是什么JSON是Ajax发送和接收数据的一种格式JSON全称是JavascriptObjectNotationJSON数据一般放在一个.json的文件中,这个文件数据格式要遵......
  • 下载vue-element-admin时的问题
    1、vue-element-admin官网地址介绍|vue-element-admin(gitee.io)2、转载于(安装vue-element-admin时npminstall报错:Pleasemakesureyouhavethecorrectaccessri......
  • Dcat admin 多文件上传,七牛云云端上传
    进入官网  DcatAdmin-Php后台开发框架   这里要选择1.x下面来安装框架      安装完laravel之后,需要修改.env文件,设置数据库链接设置正确 ......
  • Ajax
    1.URL地址的组成部分URL地址一般由三部分组成1.客户端与服务器之间的通信协议2.存有该资源的服务器名称3.资源在服务器上具体的存放位置2.get和post请求get请求通常......
  • Vue 代理服务器___Vue 跨域通过Axios 的ajax方式的get请求获取数据
    Vue代理服务器___Vue跨域通过Axios的ajax方式的get请求获取数据1、说明1.1:配置2台本地服务器说明:node_modules为vue脚手架        package.json为静态数据......
  • 用jquery进行ajax渲染
    html代码1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<metahttp-equiv="X-UA-Compatible"content="IE=edge">6<m......
  • ajax 泛微
    <%@pageimport="weaver.soa.workflow.request.RequestInfo"%><%@pageimport="weaver.soa.workflow.request.RequestService"%><%@pageimport="weaver.general.Util"......
  • MySql报错:unblock with mysqladmin flush-hosts
    #查看最大错误连接数限制showglobalvariableslike'max_connect_errors';#查看连接IPselect*fromperformance_schema.host_cache#刷新数据库IP缓存flus......
  • FastAdmin的API接口生成器插件,使用validate验证时报错等问题。
    1、当使用生成接口生成全局模型时,生成的validate文件的namespace错误应为 namespaceapp\common\validate;实际为namespaceapp\api\validate;解决方法:1、找到ap......
  • Ajax续
    一.前端拿取后端的传递结果Java:@RequestMapping("/a2")publicList<User>a2(){ArrayList<User>list=newArrayList<User>();list.add(n......