风之力

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 风之力 阅读(3100) 评论(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!
这个就等于定义全局变量而已吧?都用不着封装呢  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: