今天在用DWZ框架作添加功能時,發如今對話框保存成功後,後端返回正確的json格式,但對話框不能自動關閉窗口,並且保存後自動跳回主頁,沒有停留在當前用戶列表頁面,具體錯誤過程重現以下:javascript
1.打開用戶列表java
2.點擊添加按鈕ajax
3.在打開的添加對話窗口填入信息後,點擊保存json
4.添加成功後,對話框並無自動關閉,並且用戶列表也不見了後端
5.從新打開用戶禮拜哦,能夠看到剛纔的數據已經成功保存服務器
6.後端返回的json格式也沒有問題session
/** * navTabAjaxDone是DWZ框架中預約義的表單提交回調函數. * 服務器轉回navTabId能夠把那個navTab標記爲reloadFlag=1, 下次切換到那個navTab時會從新載入內容. * callbackType若是是closeCurrent就會關閉當前tab * 只有callbackType="forward"時須要forwardUrl值 * navTabAjaxDone這個回調函數基本能夠通用了,若是還有特殊須要也能夠自定義回調函數. * 若是表單提交只提示操做是否成功, 就能夠不指定回調函數. 框架會默認調用DWZ.ajaxDone() * <form action="/user.do?method=save" onsubmit="return validateCallback(this, navTabAjaxDone)"> * * form提交後返回json數據結構statusCode=DWZ.statusCode.ok表示操做成功, 作頁面跳轉等操做. statusCode=DWZ.statusCode.error表示操做失敗, 提示錯誤緣由. * statusCode=DWZ.statusCode.timeout表示session超時,下次點擊時跳轉到DWZ.loginUrl * {"statusCode":"200", "message":"操做成功", "navTabId":"navNewsLi", "forwardUrl":"", "callbackType":"closeCurrent", "rel"."xxxId"} * {"statusCode":"300", "message":"操做失敗"} * {"statusCode":"301", "message":"會話超時"} * */ function navTabAjaxDone(json){ DWZ.ajaxDone(json); if (json[DWZ.keys.statusCode] == DWZ.statusCode.ok){ if (json.navTabId){ //把指定navTab頁面標記爲須要「從新載入」。注意navTabId不能是當前navTab頁面的 navTab.reloadFlag(json.navTabId); } else { //從新載入當前navTab頁面 var $pagerForm = $("#pagerForm", navTab.getCurrentPanel()); var args = $pagerForm.size()>0 ? $pagerForm.serializeArray() : {} navTabPageBreak(args, json.rel); } if ("closeCurrent" == json.callbackType) { setTimeout(function(){navTab.closeCurrentTab(json.navTabId);}, 100); } else if ("forward" == json.callbackType) { navTab.reload(json.forwardUrl); } else if ("forwardConfirm" == json.callbackType) { alertMsg.confirm(json.confirmMsg || DWZ.msg("forwardConfirmMsg"), { okCall: function(){ navTab.reload(json.forwardUrl); }, cancelCall: function(){ navTab.closeCurrentTab(json.navTabId); } }); } else { navTab.getCurrentPanel().find(":input[initValue]").each(function(){ var initVal = $(this).attr("initValue"); $(this).val(initVal); }); } } } /** * dialog上的表單提交回調函數 * 當前navTab頁面有pagerForm就從新加載 * 服務器轉回navTabId,能夠從新載入指定的navTab. statusCode=DWZ.statusCode.ok表示操做成功, 自動關閉當前dialog * * form提交後返回json數據結構,json格式和navTabAjaxDone一致 */ function dialogAjaxDone(json){ DWZ.ajaxDone(json); if (json[DWZ.keys.statusCode] == DWZ.statusCode.ok){ if (json.navTabId){ navTab.reload(json.forwardUrl, {navTabId: json.navTabId}); } else { var $pagerForm = $("#pagerForm", navTab.getCurrentPanel()); var args = $pagerForm.size()>0 ? $pagerForm.serializeArray() : {} navTabPageBreak(args, json.rel); } if ("closeCurrent" == json.callbackType) { $.pdialog.closeCurrent(); } } }