用 jQuery.ajaxSetup 实现对请求和响应数据的过滤(3)

给 Ajax 返回的原始数据的进行预处理的函数。提供 data 和 type 两个参数:data 是 Ajax 返回的原始数据,type 是调用 jQuery.ajax 时提供的 dataType 参数。函数返回的值将由 jQuery 进一步处理。

该函数很简单,就两个参数,arguments[0] 是 ajax 的原始响应数据,也就是 XHR.responseText ,arguments[1] 是 ajax 请求参数中的 dataType ,而这个函数返回的值也就是 success 回调函数中的 responseText,这下就非常好办了,我们先来测试下:

前端代码发送 ajax 请求,后台响应一句 "hello" ,然后我们在 dataFilter 里返回一句 "world"

前端代码:

1         $.ajaxSetup({
2            beforeSend: function() {
3                 console.log(arguments);
4                var params = arguments[1].data;
5                var data = '';
6                for (var key in params) {
7                    //这两行代码的意思是进行 base64 编码
8                    var dataUtf8 = CryptoJS.enc.Utf8.parse(params[key]);
9                    var dataBase64 = CryptoJS.enc.Base64.stringify(dataUtf8);
10                    data = data.concat('&' + key + '=' + dataBase64);
11                 };
12                arguments[1].data = data.substring(1, data.length);//将序列化后的参数重写
13             },
14            processData: false,
15            dataFilter: function() {
16                console.log(arguments);//这是我的一个习惯,拿到一个函数之后,管他是什么东西,先看看里面有什么参数
17                return "world";
18             }
19         });
20       
21         $.ajax({
22            url: 'SetupServlet',
23            type: 'POST',
24            dataType: 'text',
25             data: {
26                param1: 'test1',
27                param2: 'test2',
28             },
29            success: function(responseText) {
30                 console.log(responseText);
31             },
32        });

后台代码(java):

1 String param1 = request.getParameter("param1"); 2 String param2 = request.getParameter("param2"); 3 System.out.println("param1: " + param1); 4 System.out.println("param2: " + param2); 5 response.getWriter().write("hello");

后端输出:

前端输出:

看来一切正常,现在我们加密和解密的过程进行一条龙的处理:

前端:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b8423aac074cd0472e9cdac8f4658853.html