風(fēng)之力

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            19 Posts :: 2 Stories :: 18 Comments :: 0 Trackbacks

          傳遞額外的數(shù)據(jù)到callback函數(shù)

          通常我們需要傳遞額外的數(shù)據(jù)到callback函數(shù),但是因?yàn)樗械幕卣{(diào)函數(shù)都只有一個(gè)參數(shù)(遠(yuǎn)程方法的返回結(jié)果),這就需要一些小技巧了。

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

          例如,你的回調(diào)函數(shù)原本需要像這個(gè)樣子:

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

          那么你可以像這個(gè)組織你的函數(shù):

          								var dataFromBrowser = ...; 
          
          // 定義一個(gè)閉包函數(shù)來(lái)存儲(chǔ)dataFromBrowser的引用,并調(diào)用dataFromServer 
          var callbackProxy = function(dataFromServer) { 
          callbackFunc(dataFromServer, dataFromBrowser); 
          }; 
          
          var callMetaData = { callback:callbackProxy }; 
          
          Remote.method(params, callMetaData);

          (調(diào)用元數(shù)據(jù)在腳本介紹中有解釋)

          換句話說(shuō),現(xiàn)在你作為callback函數(shù)傳遞過(guò)來(lái)的不是一個(gè)真正的callback,他只是一個(gè)做為代理的閉包,用來(lái)傳遞客戶端的數(shù)據(jù)。

          你可以用更簡(jiǎn)介的形式:

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

          Feedback

          # re: dwr回調(diào)傳遞多個(gè)參數(shù) 2007-06-19 15:53 IT進(jìn)行時(shí)
          翻譯的不錯(cuò),但好像不行。  回復(fù)  更多評(píng)論
            

          # re: dwr回調(diào)傳遞多個(gè)參數(shù) 2007-06-20 21:24 windforce
          可以的 我自己測(cè)試過(guò)的~~沒(méi)有問(wèn)題啊
          這是轉(zhuǎn)的...  回復(fù)  更多評(píng)論
            

          # re: dwr回調(diào)傳遞多個(gè)參數(shù)[未登錄](méi) 2008-01-08 15:35 a
          <script>
          alert(1);
          </script>  回復(fù)  更多評(píng)論
            

          # re: dwr回調(diào)傳遞多個(gè)參數(shù) 2008-11-14 11:34 yorkwy@gmail.com
          循環(huán)中呢?
          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);

          }
          });
          }
          輸出的最后一次的。  回復(fù)  更多評(píng)論
            

          # re: dwr回調(diào)傳遞多個(gè)參數(shù) 2008-11-14 11:35 yorkwy@gmail.com
          循環(huán)中呢?
          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);

          }
          });
          }
          輸出的最后一次的。  回復(fù)  更多評(píng)論
            

          # re: dwr回調(diào)傳遞多個(gè)參數(shù) 2009-05-08 17:22 xskow!
          這個(gè)就等于定義全局變量而已吧?都用不著封裝呢  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 成安县| 巴里| 深泽县| 理塘县| 景宁| 蚌埠市| 巴里| 江都市| 雅安市| 两当县| 韩城市| 太和县| 南充市| 定边县| 滨海县| 靖边县| 安达市| 邯郸县| 平顶山市| 额尔古纳市| 松溪县| 南川市| 通榆县| 北海市| 穆棱市| 双牌县| 松溪县| 清流县| 蕲春县| 北碚区| 甘德县| 五寨县| 南昌市| 玉田县| 鄂尔多斯市| 新蔡县| 鹤壁市| 海林市| 浑源县| 长宁县| 张家港市|