日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DWZ的Ajax表单

發布時間:2023/12/3 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DWZ的Ajax表单 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?Ajax表單

Ajax表單相關的操作封裝在dwz.ajax.js中。表單查詢、分頁、表單提交js方法都已經封裝在里面了。開發人員自己不需寫js,按標準使用就可以了。

表單查詢

DWZ中定義表單查詢和分頁都是用這個pagerForm來臨時存查詢條件。所以需要在查詢頁面上放下面的form

<form?id="pagerForm"?action="xxx"?method="post">

????? <input?type="hidden"?name="pageNum"?value="1"?/><!--【必須】value=1可以寫死-->

????? <input?type="hidden"?name="numPerPage"?value="20"?/><!--【可選】每頁顯示多少條-->

????? <input?type="hidden"?name="orderField"?value="xxx"?/><!--【可選】查詢排序-->

????? <!--【可選】其它查詢條件,業務有關,有什么查詢條件就加什么參數-->

????? <input?type="hidden"?name="status"?value="active"?/>

</form>

ajax表單查詢

<form?action="xxx"?method="post"?onsubmit="return?navTabSearch(this)">

<form?action="xxx"?method="post"?onsubmit="return?dialogSearch(this)">

修改每頁顯示行數

<select?class="combox"?name="numPerPage"?onchange="navTabPageBreak({numPerPage:this.value})">

????? <option?value="20">20</option>

????? <option?value="50">50</option>

????? <option?value="100">100</option>

????? <option?value="200">200</option>

</select>

?

/**

?*?處理navTab彈出層上的查詢,?會重新載入當前navTab

?*?@param?{Object}?form

?*/

function?navTabSearch(form){

????? navTab.reload(form.action,?$(form).serializeArray());

????? return?false;

}

/**

?*?處理dialog彈出層上的查詢,?會重新載入當前dialog

?*?@param?{Object}?form

?*/

function?dialogSearch(form){

????? $.pdialog.reload(form.action,?$(form).serializeArray());

????? return?false;

}

?

/**

?*?處理navTab中的分頁和排序

?*?@param?args?{pageNum:"n", numPerPage:"n", orderField:"xxx"}

?*/

function?navTabPageBreak(args){

????? var?form?=?_getPagerForm(navTab.getCurrentPanel(),?args);

????? if?(form)?navTab.reload(form.action,?$(form).serializeArray());

}

/**

?*?處理dialog中的分頁和排序

?*?@param?args?{pageNum:"n", numPerPage:"n", orderField:"xxx"}

?*/

function?dialogPageBreak(args){

????? var?form?=?_getPagerForm($.pdialog.getCurrent(),?args);

????? if?(form)?$.pdialog.reload(form.action,?$(form).serializeArray());

}

ajax表單查詢完整示例:

<div?class="pageHeader">

????? <form?action="/render.do?method=search"?method="post"?onsubmit="return?navTabSearch(this)">

????? <input?type="hidden"?name="resourceStatus"?value="${param.resourceStatus}"/>

????? <input?type="hidden"?name="pageNum"?value="1"?/>

????? <input?type="hidden"?name="orderField"?value="${param.orderField}"?/>

????? <div?class="searchBar">

??????????? <div?class="searchContent">

????????????????? <select?name="resourceType">

??????????????????????? <option?value="">全部欄目</option>

??????????????????????? <c:forEach?var="item"?items="${model.resourceTypes}">

??????????????????????? <option?value="${item.id}"?${param.resourceType?eq?item.id?"selected":""?}>${item.name}</option>

??????????????????????? </c:forEach>

????????????????? </select>

????????????????? <input?name="keywords"?type="text"?size="25"?value="${param.keywords}"/>

??????????? </div>

??????????? <div?class="subBar">

????????????????? <ul>

??????????????????????? <li><div?class="buttonActive"><div?class="buttonContent"><button?type="submit">檢索</button></div></div></li>

????????????????? </ul>

??????????? </div>

????? </div>

????? </form>

</div>

?

普通Ajax表單提交

DWZ框架Ajax無刷新表單提交處理流程是:

1.?????? ajax表單提交給服務器

2.?????? 服務器返回一個固定格式json結構

3.?????? js會調函數根據這個json數據做相應的處理

注意:

DWZ框架默認的ajax表單提交都是返回json數據,告訴客戶端操作是否成功,成功或失敗提示信息,以及成功后的處理方式(刷新某個navTab或關閉某個navTab或navTab頁面跳轉)。

表單提交后服務器操作失敗了,客戶端接收statusCode和message后給出錯誤提示,表單頁面是不動的。這樣可以方便用戶看到出錯原因后直接修改表單數據再次提交,而不用重填整個表單數據。當然如果你還是喜歡表單提交后直接載入html頁面也是沒有問題的,參照dwz.ajax.js自己擴展一下也是沒問題的。

DWZ 表單提交dwz.ajax.js

·???????? Ajax 表單提交后自動調用默認回調函數, 操作成功或失敗提示.

Form標簽上增加?onsubmit="return?validateCallback(this);

·???????? Ajax 表單提交后如果需要重新加載某個navTab或關閉dialog,可以使用dwz.ajax.js中事先定義的方法navTabAjaxDone/dialogAjaxDone

注意:如果表單在navTab頁面上使用navTabAjaxDone,表單在dialog頁面上使用dialogAjaxDone

Form標簽上增加onsubmit="return?validateCallback(this, navTabAjaxDone)"

onsubmit="return?validateCallback(this, dialogAjaxDone)"

?

·???????? Ajax 表單提交后如果需要做一些其它處理也可以自定義一個回調函數xxxAjaxDone。例如下面表單提交成功后關閉當前navTab, 或者重新載入某個tab.

Form標簽上增加onsubmit="return?validateCallback(this, xxxAjaxDone)"

服務器端響應

Ajax表單提交后服務器端需要返回以下json代碼:

{

????? "statusCode":"200",

????? "message":"操作成功",

????? "navTabId":"",

????? "rel":"",

????? "callbackType":"closeCurrent",

????? "forwardUrl":""

}

?

以下是dwz.ajax.js中定義的navTabAjaxDonedialogAjaxDone代碼片段:

?

/**

?*?navTabAjaxDoneDWZ框架中預定義的表單提交回調函數.

?*?服務器轉回navTabId可以把那個navTab標記為reloadFlag=1,?下次切換到那個navTab時會重新載入內容.?

?*?callbackType如果是closeCurrent就會關閉當前tab

?*?只有callbackType="forward"時需要forwardUrl

?*?navTabAjaxDone這個回調函數基本可以通用了,如果還有特殊需要也可以自定義回調函數.

?*?如果表單提交只提示操作是否成功,?就可以不指定回調函數.?框架會默認調用DWZ.ajaxDone()

?*?<form?action="/user.do?method=save"?οnsubmit="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"}

?*?{"statusCode":"300", "message":"操作失敗"}

?*?{"statusCode":"301", "message":"會話超時"}

?*?

?*/

function?navTabAjaxDone(json){

????? DWZ.ajaxDone(json);

????? if?(json.statusCode?==?DWZ.statusCode.ok){

??????????? if?(json.navTabId){?//把指定navTab頁面標記為需要重新載入。注意navTabId不能是當前navTab頁面的

????????????????? navTab.reloadFlag(json.navTabId);

??????????? }?else?{?//重新載入當前navTab頁面

????????????????? navTabPageBreak();

??????????? }

???????????

??????????? if?("closeCurrent"?==?json.callbackType)?{

????????????????? setTimeout(function(){navTab.closeCurrentTab();},?100);

??????????? }?else?if?("forward"?==?json.callbackType)?{

????????????????? navTab.reload(json.forwardUrl);

??????????? }

????? }

}

?

/**

?*?dialog上的表單提交回調函數

?*?服務器轉回navTabId,可以重新載入指定的navTab.?statusCode=DWZ.statusCode.ok表示操作成功,?自動關閉當前dialog

?*?

?*?form提交后返回json數據結構,json格式和navTabAjaxDone一致

?*/

function?dialogAjaxDone(json){

????? DWZ.ajaxDone(json);

????? if?(json.statusCode?==?DWZ.statusCode.ok){

??????????? if?(json.navTabId){

????????????????? navTab.reload(json.forwardUrl,?{},?json.navTabId);

??????????? }

??????????? $.pdialog.closeCurrent();

????? }

}

?

示例:

<form?method="post"?action="url"?class="pageForm required-validate"?onsubmit="return?validateCallback(this);">

<div?class="pageFormContent"?layoutH="56">

????? <p>

??????????? <label>E-Mail</label>

??????????? <input?class="required email"?name="email"?type="text"?size="30"?/>

????? </p>

????? <p>

??????????? <label>客戶名稱:</label>

??????????? <input?class="required"?name="name"?type="text"?size="30"?/>

????? </p>

</div>

<div?class="formBar">

????? <ul>

??????????? <li>

????????????????? <div?class="buttonActive"><div?class="buttonContent"><button?type="submit">保存</button></div></div>

??????????? </li>

??????????? <li>

????????????????? <div?class="button"><div?class="buttonContent"><button?type="Button"?class="close">取消</button></div></div>

??????????? </li>

????? </ul>

</div>

</form>

?

總結

以上是生活随笔為你收集整理的DWZ的Ajax表单的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。