拦截 jQuery Ajax success 时机点
返回的 json 数据拥有统一的格式,如 {status:0, result:{}}。
需要在回调客户 success 方法前对数据进行处理,比如特殊的 status:-1 表示数据错误,而 result 包含错的 map 信息,在此时喷到 document 中。
方案:
不包装新的方法也不允许改动 jQuery 库,还必须支持 jQuery 所有的 Shorthand Methods,解决方案如下代码(比较简单,不解释了)。
2 (function() {
3 $.itp = $.itp || { version: ‘0.0.1‘ };
4 $.ajaxPrefilter(function(options) {
5 if (options.success && typeof options.success === "function") {
6 options.__success__ = options.success;
7 options.success = function (data, textStatus, xhr) {
8 if (data) {
9 // 可以做一些数据处理后在仍到 xhr.responseJSON。
10 } else {
11 // 比如,传递一个状态码,表示不呼叫 success 方法。
12 options.__status__ = -1;
13 }
14 };
15 }
16 });
17
18 $(document).ajaxSuccess(function(event, xhr, settings) {
19 if (settings.__status__ && settings.__status__ === -1)
20 return;
21 if (settings.__success__ && typeof settings.__success__ === "function")
22 settings.__success__(xhr.responseJSON);
23 });
24
25 //使用方法
26 $.ajax("/home/test", {
27 type: "POST",
28 data: JSON.stringify({ models: [{ name: "foo" }] }),
29 dataType: "JSON",
30 contentType: "application/json",
31 success: function(data) {
32 }
33 });
34 })();
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。