dwr 返回值保存不了.不知道为啥

mengqingtong 2009-09-18 10:19:05

function testDwrParam(){
var a=document.getElementById("a").value;
var b=document.getElementById("b").value;
var c=document.getElementById("c").value;
var sumG=0;
testDwrJs.invokeByDwrParam(a,b,c,function(sum){
sumG=sum;
alert(sum);
});
alert(sumG);
}



testDwrJs.invokeByDwrParam方法里alert(sum);返回值正常
在testDwrJs.invokeByDwrParam方法外面的alert(sumG); 显示sumG还是为0.我想知道为什么sumG=sum;没有完成赋值过程!!!!!!!
...全文
79 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoK0629 2012-02-22
  • 打赏
  • 举报
回复
我觉得是:
dwr有异步同步的问题,回调和其他调用它的函数一起执行的,有可能值还未返回,而调用它的函数已经执行完了,那么调用函数只能用初始值,而不是回调返回的值。
我转了篇比别人的文章可以参考下:
http://blog.csdn.net/zxkevin1989/article/details/7282315
mengqingtong 2009-09-19
  • 打赏
  • 举报
回复
问题解决,结贴了
fanjj_023 2009-09-18
  • 打赏
  • 举报
回复
两个sumG不是同一个变量
mengqingtong 2009-09-18
  • 打赏
  • 举报
回复
问题已经整明白了。
testDwrJs.invokeByDwrParam(a,b,c,function(sum){
sumG=sum;
alert(sum);
});
alert(sumG);


alert(sumG);显示的值是在 testDwrJs.invokeByDwrParam方法执行之前的值。因为 testDwrJs.invokeByDwrParam方法是ajax异步调用。所以就是一个时间差问题。所以要把操作放在 testDwrJs.invokeByDwrParam方法里面进行!
mengqingtong 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wpjava 的回复:]
你重新写个js的函数来接受返回值,赋值操作在你新的函数中进行,
要是不行你就在你的项目后敲入 dwr 用dwr提供的宽测试功能
[/Quote]

我想知道的是为什么
sumG=sum;
这个赋值操作不起作用.谁能往深里讲下.不堪感激
易写科技 2009-09-18
  • 打赏
  • 举报
回复
你重新写个js的函数来接受返回值,赋值操作在你新的函数中进行,
要是不行你就在你的项目后敲入 dwr 用dwr提供的宽测试功能
wxj8228 2009-09-18
  • 打赏
  • 举报
回复
DWREngine.setAsync(false);
testDwrJs.invokeByDwrParam(a,b,c,function(sum){
sumG=sum;
alert(sum);
});
DWREngine.setAsync(true);
alert();
这样应该也可以的吧
yangxuebao123 2009-09-18
  • 打赏
  • 举报
回复
回调函数,匿名类部类,我想是运行后就销毁了里面的值
(function(sum){
sumG=sum;
alert(sum);
});

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧