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;}
});
}
...全文
532 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时,比如说部门不存在,结果有弹出提示"部门不存在",但是表单还是提交了,我不想让他提交,怎么办
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 ### 兴F420/F460/F660光猫超级密码配置及功能启用指南 #### 一、超级密码的获取与配置 对于兴F420/F460/F660系列光猫设备,可以通过特定的命令行接口方法来获取并配置超级密码。以下指南详细说明了这一过程的实现方法。 **步骤1:** 启动任意一种网络浏览器,并键入网址`http://192.168.1.1/web_shell_cmd.gch`以进入命令行操作界面。 **步骤2:** 输入指令`sendcmd1DBpUserInfo`(需注意指令间的空格和大小写格式),该指令用于查询当前登录所使用的用户名及密码。通常情况下,预设的用户名与密码为`telecomadmin/telecomadmin+数字`。 **步骤3:** 如果需要变更用户名,可以在命令行环境键入`sendcmd1DBsetUserInfo0Usernameadmin`(同样需注意空格和大小写),将用户名更改为`admin`。 **步骤4:** 继续输入`sendcmd1DBsetUserInfo0Passwordadmin`(同样需注意空格和大小写),将密码也设定为`admin`。 **步骤5:** 完成修改后,必须执行保存操作,通过输入命令`sendcmd1DBsave`(注意空格和大小写),以最终确认设置。 #### 二、远程控制功能的禁用 为了保障网络安全,防止未经授权的远程访问,应按照以下步骤禁用远程控制功能: **步骤1:** 再次启动网络浏览器并输入网址`http://192.168.1.1/web_shell_cmd.gch`。 **步骤2:** 键入指令`se...

67,535

社区成员

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

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