風之力

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            19 Posts :: 2 Stories :: 18 Comments :: 0 Trackbacks

          傳遞額外的數據到callback函數

          通常我們需要傳遞額外的數據到callback函數,但是因為所有的回調函數都只有一個參數(遠程方法的返回結果),這就需要一些小技巧了。

          解決方案就是使用Javascript的閉包特性。

          例如,你的回調函數原本需要像這個樣子:

          function callbackFunc(dataFromServer, dataFromBrowser) { 
          // 用dataFromServer和dataFromBrowser做些事情...... 
          }

          那么你可以像這個組織你的函數:

          								var dataFromBrowser = ...; 
          
          // 定義一個閉包函數來存儲dataFromBrowser的引用,并調用dataFromServer 
          var callbackProxy = function(dataFromServer) { 
          callbackFunc(dataFromServer, dataFromBrowser); 
          }; 
          
          var callMetaData = { callback:callbackProxy }; 
          
          Remote.method(params, callMetaData);

          (調用元數據在腳本介紹中有解釋)

          換句話說,現在你作為callback函數傳遞過來的不是一個真正的callback,他只是一個做為代理的閉包,用來傳遞客戶端的數據。

          你可以用更簡介的形式:

          								var dataFromBrowser = ...; 
          Remote.method(params, { 
          callback:function(dataFromServer) { 
          callbackFunc(dataFromServer, dataFromBrowser); 
          } 
          });
          posted on 2007-03-06 15:24 風之力 閱讀(3134) 評論(6)  編輯  收藏 所屬分類: ajax

          Feedback

          # re: dwr回調傳遞多個參數 2007-06-19 15:53 IT進行時
          翻譯的不錯,但好像不行。  回復  更多評論
            

          # re: dwr回調傳遞多個參數 2007-06-20 21:24 windforce
          可以的 我自己測試過的~~沒有問題啊
          這是轉的...  回復  更多評論
            

          # re: dwr回調傳遞多個參數[未登錄] 2008-01-08 15:35 a
          <script>
          alert(1);
          </script>  回復  更多評論
            

          # re: dwr回調傳遞多個參數 2008-11-14 11:34 yorkwy@gmail.com
          循環中呢?
          var names = document.getElementsByName('testName');
          for(var i=0;i<names.length;i++){
          var id = names[i].id;
          service.getText(id,{callback:function(data){
          alert(id);
          alert(data);

          }
          });
          }
          輸出的最后一次的。  回復  更多評論
            

          # re: dwr回調傳遞多個參數 2008-11-14 11:35 yorkwy@gmail.com
          循環中呢?
          var names = document.getElementsByName('testName');
          for(var i=0;i<names.length;i++){
          var id = names[i].id;
          service.getText(id,{callback:function(data){
          alert(id);
          alert(data);

          }
          });
          }
          輸出的最后一次的。  回復  更多評論
            

          # re: dwr回調傳遞多個參數 2009-05-08 17:22 xskow!
          這個就等于定義全局變量而已吧?都用不著封裝呢  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 利川市| 应城市| 武功县| 济源市| 古交市| 嘉义县| 灵丘县| 五家渠市| 九龙城区| 鲁甸县| 汶上县| 中方县| 乌恰县| 苏尼特左旗| 桦甸市| 昌乐县| 聂拉木县| 漠河县| 宁乡县| 华容县| 田林县| 甘泉县| 呼图壁县| 凤庆县| 雅江县| 宝应县| 新竹市| 武威市| 安乡县| 馆陶县| 泾源县| 邹城市| 鸡东县| 石渠县| 海原县| 成安县| 泰顺县| 随州市| 西畴县| 丽江市| 图木舒克市|