js中调用dwr

mengjiaoyao 2009-02-12 08:28:30
我在javascript中通过dwr来调用某个java类的一个方法:如下
function ChkForm()
{
//验证表单的基本数据是否正确:是否为空什么的,没有数据库操作
.......如果上面的验证通过了,进行部门存在判断
return ChkDept();
这里边不仅仅只有部门判断,还有其他判断
。。。。


}
function ChkDept()
{
//该方法主要是进行判断部门是否存在判断
deptService.isDeptExists(unitid,deptname,
function(data)
{
if(data) { //说明部门是存在的:return true;} else {alert('部门不存在 ');return false;}
});
}
...全文
493 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
scholres 2009-02-15
  • 打赏
  • 举报
回复
DWR默认是异步返回的
也就是回调方式

但是可以设置成同步的
zounali 2009-02-14
  • 打赏
  • 举报
回复
理解性错误
请问ChkDept()的返回值是Boolean吗,否则将不会阻碍表单的提交。所以同意3楼的建议。
同时<form onSubmit="return ChkFrom()">
li_hy2002 2009-02-13
  • 打赏
  • 举报
回复
你的部门判断不要写在点按钮的时候才验证啊,可以在文本框失去焦点的时候判断
HinanaiTenshi 2009-02-13
  • 打赏
  • 举报
回复
ajax本身的HttpXmlRequest是同步的吧,
不过dwr的回调比较特殊,在servlet里生成js代码然后out到页面执行的,这种回调是异步的.
所以ChkDept()方法不会等待dwr回调函数的执行结果.
调起deptService.isDeptExists(xxx)方法之后,就立刻执行后面的代码,
在ajax发现部门为空alert()并且return false之前,表单就被提交了( - __ - )y一~
洛迪文 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mengjiaoyao 的回复:]
ChkForm()在button点击是触发,我点击button时,比如说部门不存在,结果有弹出提示"部门不存在",但是表单还是提交了,我不想让他提交,怎么办
[/Quote]
ajax的是一种异步的机制,你在function(data) {}中return 是没有效果的。
你在

//必须加上后面这句
dwr.engine.setOrdered(true); //设定为同步
function ChkDept()
{
//该方法主要是进行判断部门是否存在判断
var isExists = false;
deptService.isDeptExists(unitid,deptname,
function(data)
{
if(data) { isExists = true} //修改isExists的值
});
return isExists; //在返回isExists的值
}

HinanaiTenshi 2009-02-13
  • 打赏
  • 举报
回复
恩,ajax是异步J&X,请求的发送不会对页面造成影响,能继续响应其他事件.
我是说本身的HttpXmlRequest是同步的.
ajax页面和后台交互的HttpXmlRequest所依赖的是http请求,标准的同步通信.
洛迪文 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 HinanaiTenshi 的回复:]
ajax本身的HttpXmlRequest是同步的吧,
不过dwr的回调比较特殊,在servlet里生成js代码然后out到页面执行的,这种回调是异步的.
所以ChkDept()方法不会等待dwr回调函数的执行结果.
调起deptService.isDeptExists(xxx)方法之后,就立刻执行后面的代码,
在ajax发现部门为空alert()并且return false之前,表单就被提交了( - __ - )y一~
[/Quote]

Ajax是异步,也就是说,我们在发送ajax请求的时候,返回来的执行的结果不一定是按照你发送请求返回的。
这就是为什么ajax为(Asynchronous JavaScript and XML)异步Javascript和XML的缩写。
swl401 2009-02-12
  • 打赏
  • 举报
回复
把ChkForm()在<form onSubmit="return ChkFrom()">触发试下
mengjiaoyao 2009-02-12
  • 打赏
  • 举报
回复
ChkForm()在button点击是触发,我点击button时,比如说部门不存在,结果有弹出提示"部门不存在",但是表单还是提交了,我不想让他提交,怎么办

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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