我正在尝试创建一个在ajax成功回调之前被调用的全局处理程序。我对我的应用程序进行了许多ajax调用,如果发生错误,我将返回特定的结构,因此在成功运行之前,需要运行一些内容以检查响应数据以查看其是否包含错误代码位(例如1 / 0
样品回复
{"code": "0", "message": "your code is broken"}
要么
{"code": "1", "data": "return some data"}
我找不到开箱即用的方法来执行此操作,查看了预过滤器,ajaxSetup和其他可用方法,但它们并没有完全实现,我可以想到的选择是破解ajax方法本身一点点:
var oFn = $.ajax; $.ajax = function(options, a, b, c) { if(options.success) { var oFn2 = options.success; options.success = function(response) { //check the response code and do some processing ajaxPostProcess(response); //if no error run the success function otherwise don't bother if(response.code > 0) oFn2(response); } } oFn(options, a, b, c); };
我已经使用了一段时间了,并且效果很好,但是想知道是否有更好的方法来完成它,或者我在jQuery文档中错过了一些东西。
您可以构建自己的AJAX处理程序,而不使用默认的ajax:
var ns = {}; ns.ajax = function(options,callback){ var defaults = { //set the defaults success: function(data){ //hijack the success handler if(check(data)){ //checks callback(data); //if pass, call the callback } } }; $.extend(options,defaults); //merge passed options to defaults return $.ajax(options); //send request }
因此$.ajax,您现在使用的是呼叫而不是;
$.ajax
ns.ajax({options},function(data){ //do whatever you want with the success data });