请求失败处理
function requesFail(xhr){ var status = xhr.status; if (status) { showNotify("error", "网络错误", "发生网络错误,错误码为:" + xhr.status); } else { showNotify("error", "网络错误", "未知网络错误, 请确保设备处在联网状态"); } }
请求成功处理
function requestOk(data,errMsg,callbackOk,callbackError){ if(data==undefined){ showNotify('info','提示','无法从服务器获取详细数据,请联系管理员') }else if(data.code==1){ callbackOk(data); }else{ callbackError(data,errMsg); } }
*请求成功,返回data:{code:0,data:xx},此处认为code=0,为成功,调用成功后执行
callbackOk
callbackOk 是该请求成功后要进行的操作
code!=0即为出错,执行出错方法:
callbackError
实例:
$('#toPost').click(function(){ console.log('Post'); $.ajax({ type:"Post", url:postUrl, data:{ account:'cd', password:'121212' }, dataType:'json', success:function(data){ requestOk(data,'',function(){ console.log(data); },customCodeError); }, error:function(xhr,state,errorThrown){ requesFail(xhr); } }); });
customCodeError 为code!=0 要执行的函数:
function customCodeError(data,errMsg){ let message=errMsg==''?'错误':errMsg+'发生错误'; message = message + ",错误码为:" + data.code; console.log(message); showNotify("info", "错误", msg); }
若code!=0 ,没有特殊的code=n,需要做特别处理,则调用customCodeError,若有特殊处理,则根据特殊情况,自行封装。
如:
function postCodeError(data,errMsg){ let code=data.code; if(code==1001){ showNotify("info", "错误", "不合法用户,错误码:"+code); }else{ showNotify("info", "错误", "用户不存在,错误码:"+code); } }
showNotify(),借助pnotify插件的一种显示错误消息的面板。可根据自己的需求进行封装。应用时需导入文件
<
link
href=
"static/css/pnotify.css"
rel=
"stylesheet"
/>
<
script
src=
"static/js/common/pnotify.js"
>
<
/
script
>
/* notify 配置* 使用 showNotify("info", "提示", "这是提示语句"); showNotify("success", "成功啦", "这是成功语句"); showNotify("error", "失败", "这是失败语句"); *****************************************************************/ function showNotify(type, title, text) { var icons; if (type == "success") { icons = "fa fa-check-circle"; } if (type == "error") { icons = "fa fa-exclamation-triangle"; } if (type == "info") { icons = "fa fa-exclamation-circle"; } var notice = new PNotify({ title: title, text: text, type: type, delay: 2000, icon: icons, addclass: "notifyOnly", styling: "fontawesome", buttons: { closer: true, sticker: true } }); notice.get().click(function() { notice.remove(); }); }