<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    本站不再更新,歡迎光臨 java開發技術網
    隨筆-230  評論-230  文章-8  trackbacks-0
    當你需要通過dwr完成類似提交form的操作,了解DWRUtil.getValues是必須的
    ?/**
    ?* Given a map, call getValue() for all the entries in the map using the entry key as an element id.
    ?* Given a string or element that refers to a form, create an object from the elements of the form.
    ?* @see http://getahead.ltd.uk/dwr/browser/util/getvalues
    ?*/
    DWRUtil.getValues = function(data) {

    ? //定義ele變量,
    ? var ele;
    //如果ele是一個字符串通過 $函數轉化一下,$函數的使用見我的上個帖子深入分析dwr中的DWRUtil.$
    ? if (typeof data == "string") ele = $(data);
    //如果ele是個HTML元素對象,通常應該是一個form對象
    ? if (DWRUtil._isHTMLElement(data)) ele = data;
    ?
    ?if (ele != null) {
    ??? //如果ele不是form對象,返回,只有form對象才有elements 屬性
    ??? if (ele.elements == null) {
    ????? alert("getValues() requires an object or reference to a form element.");
    ????? return null;
    ??? }
    ??? //定義一個空對象reply
    ??? var reply = {};
    ??? //定義一個對象放key
    ??? var value;
    ??? //遍歷form,將表單key-value放入reply,忽略<input type="image"/>
    ??? for (var i = 0; i < ele.elements.length; i++) {
    ????? if (ele[i].id != null) value = ele[i].id;
    ????? else if (ele[i].value != null) value = ele[i].value;
    ????? else value = "element" + i;
    ????? reply[value] = DWRUtil.getValue(ele[i]);
    ??? }
    ??? return reply;
    ? }

    //如果傳入的參數對象不是表單對象,通常應該是與領域對象對應js對象
    ? else {
    ??? //遍歷對象屬性,將與屬性對應的頁面元素值拷到js對象中
    ??? for (var property in data) {
    ????? // Are there any elements with that id or name
    ????? if ($(property) != null || document.getElementsByName(property).length >= 1) {
    ??????? data[property] = DWRUtil.getValue(property);
    ????? }
    ??? }
    ??? return data;
    ? }
    };

    總結
    1)如果你需要使用ajax完成表單提交的操作,那么你應該使用DWRUtil.getValues,參數或者是個form對象,或者是個與領域對象對應的js對象
    2)應該看到第二種用法的局限性,如果存在多個相同的表單或者是個復合的js對象,那么第二種用法是不合適的
    3)第一種用法看似復雜,但更具靈活性
    到底改如何選擇取決于具體的應用
    ====================================================
    ?背景:需要使用ajax完成表單提交操作

    核心代碼如下:

    ??? function addReply(frm){

    ?

    ?

    。。。。

    ?

    //利用dwr自動將frm提交的數據植入js對象,

    //DWRUtil.getValues的使用見我的上篇帖子

    var commentForm = DWRUtil.getValues(frm);

    ?

    //調用服務器端的服務

    CommentService.writeComment(writecallback,commentForm );

    。。。。。
    }

    ?

    注意以下幾點

    1)傳給服務的js對象最好嚴格與領域對象對應不能有key為""的屬性否則會報錯,可以有多余? 的屬性,但后臺會出現一些煩人日志信息告訴你無法匹配

    2)對于領域對象來說,dwr在轉換時會遍歷所有get方法(根據傳入的js對象屬性進行反射不就好了,為什么要遍歷get方法,真是奇怪啊),所以注意你的get方法要健壯避免后臺會出很多日志信息匯報空指針之類的錯誤


    3)關于本地傳遞的js對象,必須結構與領域對象對應。從抽象的角度看多數情況領域對象完?? 全可以用數組和hash結構描述,何況所謂的對應只是屬性的對應,所以合理的使用Array和Object完全可以實現js對象和領域對象的匹配

    ?

    4)必須配置合適的轉化器dwr知道如何將你傳入的js對象轉化為領域對象

    ?

    5)使用DWRUtil.getValues(frm)或者DWRUtil.getValues(obj)收集提交的數據


    ?? 方式的區別詳見該文上半部分


    posted on 2006-11-21 22:38 有貓相伴的日子 閱讀(1719) 評論(0)  編輯  收藏 所屬分類: dwr
    本站不再更新,歡迎光臨 java開發技術網
    主站蜘蛛池模板: 国产99视频精品免费视频7| 精品国产人成亚洲区| 亚洲人成影院在线无码按摩店| 久久狠狠高潮亚洲精品| 美女尿口扒开图片免费| 久久成人免费电影| 国产免费av一区二区三区| 亚洲av日韩av激情亚洲| 国产精品成人亚洲| 亚洲高清免费在线观看| 亚洲一级片免费看| 亚洲国产精品综合久久久| 国产成人精品免费大全| 成人免费无码大片a毛片| 亚洲成A人片在线观看WWW| 精品亚洲福利一区二区| 18女人腿打开无遮掩免费| 亚洲黄片毛片在线观看| 久久久久亚洲国产| 日韩视频在线观看免费| 亚洲国产成人久久笫一页| 亚洲AV成人无码天堂| 嫩草成人永久免费观看| 亚洲第一区精品日韩在线播放| 亚洲中文无码a∨在线观看| 青柠影视在线观看免费| 四虎精品亚洲一区二区三区| 亚洲国产成人99精品激情在线| 18禁超污无遮挡无码免费网站 | 亚洲国产二区三区久久| 特黄aa级毛片免费视频播放| 免费H网站在线观看的| 亚洲av综合avav中文| 一个人看的在线免费视频| 青青青青青青久久久免费观看| 亚洲视屏在线观看| 久久青草91免费观看| 亚洲综合无码精品一区二区三区| 国产AV无码专区亚洲AV蜜芽| 黄瓜视频高清在线看免费下载| 亚洲国产精品久久66|