使用dwr同步调用导致无法获取js方法的返回结果问题的解决办法
2013-10-23 16:13
1031 查看
今天遇到这样一个诡异的问题,a.js中调用b.js中的方法b(),得到的返回结果总是undefined,b()方法如下:
function b(PhoneNum){
DWREngine.setAsync(false);
var javaBean={
PhoneNum:PhoneNum
};
apAction.queryNOPart(JSON.stringify(javaBean),{
callback : function(data) {
return data.result;
}
});
DWREngine.setAsync(true);
};
看上去代码逻辑没问题,但是a.js中获取到b()方法的返回结果就是不对,调试了很久没有找到问题所在,仔细琢磨了一下dwr同步调用可能有影响,于是想到了下面的方法,结果就好了,能够获取到方法的返回结果了,具体修改如下:
function b(PhoneNum){
var result = ""; // 修改的地方
DWREngine.setAsync(false);
var javaBean={
PhoneNum:PhoneNum
};
apAction.queryNOPart(JSON.stringify(javaBean),{
callback : function(data) {
result = data.result; // 修改的地方
}
});
DWREngine.setAsync(true);
return result; // 修改的地方
};
虽然不明白这是为什么,但是先在这里做个笔记,对于和我一样痛苦的同伴们,可以参考一下,如果你知道是什么原因,欢迎交流!
function b(PhoneNum){
DWREngine.setAsync(false);
var javaBean={
PhoneNum:PhoneNum
};
apAction.queryNOPart(JSON.stringify(javaBean),{
callback : function(data) {
return data.result;
}
});
DWREngine.setAsync(true);
};
看上去代码逻辑没问题,但是a.js中获取到b()方法的返回结果就是不对,调试了很久没有找到问题所在,仔细琢磨了一下dwr同步调用可能有影响,于是想到了下面的方法,结果就好了,能够获取到方法的返回结果了,具体修改如下:
function b(PhoneNum){
var result = ""; // 修改的地方
DWREngine.setAsync(false);
var javaBean={
PhoneNum:PhoneNum
};
apAction.queryNOPart(JSON.stringify(javaBean),{
callback : function(data) {
result = data.result; // 修改的地方
}
});
DWREngine.setAsync(true);
return result; // 修改的地方
};
虽然不明白这是为什么,但是先在这里做个笔记,对于和我一样痛苦的同伴们,可以参考一下,如果你知道是什么原因,欢迎交流!
相关文章推荐
- 在sharepoint2013中为非自定义webpart注入javascript脚本
- JavaScript Dom 编程艺术 阅读笔记
- jstring 和 char* 互转
- javascript cookie示例代码
- EXTJS文件上传点提交是报如下错误:missing ) in parenthetical
- JSP入门3 Servlet
- window8 metro应用Winjs开发中的输入框聚焦问题
- JavaScript数据类型重点笔记
- ExtJS做的一个信息管理界面。每一句都带有注释,可以当教科书用
- JavaScript的原型及原型链
- 项目公共jsp不许修改的一点思路
- 深入理解javascript的一些特性(静态作用域,this指针,闭包)
- Lo-Dash – 替代 Underscore 的优秀 JS 工具库
- ExtJS4.x Grid导出到Excel(详解)
- JS 判断是否弹出框
- lsit转json
- json解析
- JS页面跳转
- list转json
- JS获取单选按钮的值