我在javascript中通过dwr来调用某个java类的一个方法:如下
function ChkForm()
{
//验证表单的基本数据是否正确:是否为空什么的,没有数据库操作
.......如果上面的验证通过了,进行部门存在判断
return ChkDept();
这里边不仅仅只有部门判断,还有其他判断
。
}
function ChkDept()
{
//该方法主要是进行判断部门是否存在判断
deptService.isDeptExists(unitid,deptname,
function(data)
{
if(data) { //说明部门是存在的:return true;} else {alert('部门不存在 ');return false;}
});
}
function ChkForm()
{
//验证表单的基本数据是否正确:是否为空什么的,没有数据库操作
.......如果上面的验证通过了,进行部门存在判断
return ChkDept();
这里边不仅仅只有部门判断,还有其他判断
。
}
function ChkDept()
{
//该方法主要是进行判断部门是否存在判断
deptService.isDeptExists(unitid,deptname,
function(data)
{
if(data) { //说明部门是存在的:return true;} else {alert('部门不存在 ');return false;}
});
}
解决方案 »
- 不连网的情况下,struct2 不能正常启动的原因?
- struts2+hibernate 做集成,
- 请问高手?
- 有人学过cognos吗?
- 怎么把字符串时间转换为timestamp
- 請各位高手幫忙擴充下面這些代碼﹐必高分感謝﹗
- Struts+ EJB 以及主子表问题
- 新手急问:用jb + weblogic 开发 j2ee ,有什么较好讲如何配置的入门书?
- 请教,哪位知道关于定制电子表单和定制工作流程的基于j2ee的中间件产品,知道厂家和中间件名称也行,最好将使用情况(好用吗)也说说,谢
- 请哪位高手指点这个问题。。。
- j2EE基础题 谢谢
- 求救!Struts中<bean:write>标签中文乱码问题!!!
你在//必须加上后面这句
dwr.engine.setOrdered(true); //设定为同步
function ChkDept()
{
//该方法主要是进行判断部门是否存在判断
var isExists = false;
deptService.isDeptExists(unitid,deptname,
function(data)
{
if(data) { isExists = true} //修改isExists的值
});
return isExists; //在返回isExists的值
}
不过dwr的回调比较特殊,在servlet里生成js代码然后out到页面执行的,这种回调是异步的.
所以ChkDept()方法不会等待dwr回调函数的执行结果.
调起deptService.isDeptExists(xxx)方法之后,就立刻执行后面的代码,
在ajax发现部门为空alert()并且return false之前,表单就被提交了( - __ - )y一~
Ajax是异步,也就是说,我们在发送ajax请求的时候,返回来的执行的结果不一定是按照你发送请求返回的。
这就是为什么ajax为(Asynchronous JavaScript and XML)异步Javascript和XML的缩写。
我是说本身的HttpXmlRequest是同步的.
ajax页面和后台交互的HttpXmlRequest所依赖的是http请求,标准的同步通信.
请问ChkDept()的返回值是Boolean吗,否则将不会阻碍表单的提交。所以同意3楼的建议。
同时<form onSubmit="return ChkFrom()">
也就是回调方式但是可以设置成同步的