大佬教程收集整理的这篇文章主要介绍了jQuery jqXHR – 取消链接调用,触发错误链,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
{success:true | false,data:…}
>客户端实用程序启动这样的ajax调用
var jqxhr = $.ajax({…});
>问题区域:
jqxhr.success(function(data,textStatus,xhr) { if(!data || !data.success) { ???? // abort processing,trigger error } }); return jqxhr; // return to caller so he can attach his own handlers
在您创建AJAX请求的函数中,您还可以创建一个延迟对象,并在将其解析和拒绝函数绑定到相应的$.ajax请求的回调之后,再通过一些自定义数据验证返回给调用者,如下所示:
function makerequest() { var deferred = $.Deferred(); var promise = deferred.promise(); var jqxhr = $.ajax({ // ... }); jqxhr.success(function(data,status,xhr) { if (!data || !data.success) { deferred.reject(jqxhr,'error'); } else { deferred.resolve(data,xhr); } }); jqxhr.error(function(jqXHR,error) { deferred.reject(jqXHR,error); }); return promise; }
var request = makerequest(); request.done(successCallBACk); request.fail(errorCallBACk);
甚至只是:
@H_12_10@makerequest().then(successCallBACk,errorCallBACk);如果你也添加这个:
promise.success = promise.done; promise.error = promise.fail;
那么你的调用者将拥有(或许更熟悉).success()和.error()的接口,就像纯$.ajax()调用一样:
var request = makerequest(); request.success(successCallBACk); request.error(errorCallBACk);
(.complete()的实现作为读者的练习.)
看到这个演示:
> http://jsfiddle.net/_rsp/r2YnM/
> http://jsfiddle.net/_rsp/r2YnM/1/(更详细)
function ajax(url,data) { var self = this; var deferred = $.Deferred(); var promise = deferred.promise(); var jqxhr = $.ajax({ url: url,data: JSON.Stringify(data),contentType: "application/json; charset=utf-8",dataType: 'json',type: 'POST' }).done(function (msg,xhr) { if (!msg || msg.Error) { self.doError(msg.Error); deferred.reject(jqxhr,'error'); } else { deferred.resolve(msg,xhr); } }); return promise; }
以上是大佬教程为你收集整理的jQuery jqXHR – 取消链接调用,触发错误链全部内容,希望文章能够帮你解决jQuery jqXHR – 取消链接调用,触发错误链所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。