setTimeout();dwr.engine.setAsync();
前台做了个修改页面,希望实现三个下拉菜单初始化,并且可以再次重选。
初始化代码如下:
function initSelectQ(){
var jdSelect = document.getElementById('jdSelect');
dwr.engine.setAsync(false);//设置dwr方法同步
GridService.selectTShsjglJd({},function(data){
var varItemk = new Option("", "");
jdSelect.options.add(varItemk);
for(var i=0;i<data.length;i++){
var zbmoption = document.createElement("option");
zbmoption.text = data[i].jdmc;
zbmoption.value = data[i].id;
jdSelect.options.add(zbmoption);
}
});
dwr.engine.setAsynctrue);//恢复dwr方法异步
initSelect();
}
function initSelect(){
//setTimeout(selectJdSqWg, 500);
selectJdSqWg();
}
function selectJdSqWg() {
var wgname;
var sqname;
var jdname;
var jdSelect = document.getElementById('jdSelect');
var sqSelect = document.getElementById('sqSelect');
var wgSelect = document.getElementById('wgSelect');
dwr.engine.setAsync(false);//设置dwr方法同步
GridService.selectWgInfoByLoginCode('${ryqyVO.mbwgCode}',function(data){
if(data){
if(data.length >0){
jdname=data[0].jdmc;
sqname=data[0].sqmc;
wgname=data[0].wgmc;
for(var i=0;i<jdSelect.options.length;i++){
if(jdSelect.options[i].text == jdname) {
jdSelect.options[i].selected = true;
changeJD(jdSelect.options[i].value);
break;
}
}
//alert(1);
for(var i=0;i<sqSelect.options.length;i++){
if(sqSelect.options[i].text == sqname) {
sqSelect.options[i].selected = true;
changeSQ(sqSelect.options[i].value);
break;
}
}
//alert(2);
for(var i=0;i<wgSelect.options.length;i++){
if(wgSelect.options[i].text == wgname) {
wgSelect.options[i].selected = true;
break;
}
}
}
}
});
dwr.engine.setAsync(true);//恢复dwr方法异步
}
遇到问题,解决方法:
最开始没有设置同步,发现方法里面不alert();不能初始化,不明所以,然后百度得到解释,selectJdSqWg()方法执行要在initSelectQ()执行完成之后才能正常调用,说是要使用setTimeout(selectJdSqWg, 500);方法。最开始500设置的是1,结果dwr读取数据后的回调函数越复杂,时间就要设的越大,对于页面显示有迟缓,然后把函数里面两个ajax方法都设置为同步,可以正常初始化了。
分享到:
相关推荐
Direct Web Remoting (DWR) 是一个开源Java库,它允许Web应用程序在客户端JavaScript和服务器端Java代码之间进行实时通信,无需使用XMLHttpRequest或JSONP等传统Ajax技术。DWR通过提供一套简单易用的API,使得开发...
- **自动更新**:当服务器端的类或方法改变时,DWR可以自动更新客户端的JavaScript代码,确保客户端始终与服务器保持同步。 - **安全控制**:DWR有内置的安全机制,如CSRF防护和IP白名单,以防止未授权的访问。 -...
使用DWR实现Reverse Ajax,首先需要在服务器端配置DWR,包括创建DWR的配置文件dwr.xml,设置允许访问的Java方法。然后在客户端,使用JavaScript的DWR API创建连接并注册回调函数,以接收服务器推送的数据。在服务器...
4. **客户端调用**:如何在HTML/JavaScript中使用DWR API来调用服务器端的方法,包括异步和同步调用方式。 5. **CORS支持**:如果需要跨域通信,DWR如何支持CORS(Cross-Origin Resource Sharing)配置。 6. **调试...
在Ajax技术中,DWR扮演着核心角色,它通过JavaScript对象来封装Java方法,这样在前端JavaScript代码中,可以像调用本地函数一样调用远程服务器的方法。这提升了用户体验,因为用户可以在不刷新整个页面的情况下获取...
DWR(Direct Web Remoting)是Java后端与JavaScript前端之间进行实时通信的一种框架,它简化了Ajax应用的开发,让开发者可以像调用本地方法一样调用服务器端的方法。 **DWR的介绍** DWR允许JavaScript在客户端直接...
这里的`/dwr/interface/MyService.js`和`/dwr/engine.js`是DWR自动生成的文件,它们提供了调用后端方法的API。`DWREngine.setAsync(false)`设置了请求模式为同步,然后`MyService.getGreeting`调用就会阻塞直到...
**Ajax(Asynchronous JavaScript and XML)**是一种在无需重新加载整个网页的情况下,...通过深入学习“ajax-DWR教程讲义.rar”中的资源,你将能够理解Ajax的基本原理,熟悉DWR的使用方法,并能将其应用到实际项目中。
为了使用DWR,开发者需要在服务器端配置DWR引擎,定义允许访问的Java类和方法,并在客户端引入`engine.js`和`util.js`。然后,通过JavaScript代码就可以直接调用服务器端的方法,实现双向通信。 总之,DWR提供了一...
5. **使用DWR**:使用DWR时,开发者可以创建Java服务器端接口,DWR会自动生成相应的JavaScript API,使得在客户端可以直接调用这些服务器方法,实现了远程方法调用(Remote Method Invocation)。 6. **DWR的功能**...
Direct Web Remoting (DWR) 是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用Java方法,从而实现了富互联网应用(RIA)的功能。DWR通过Ajax技术提供了这种...
这个“js dwr框架jar包”包含了运行DWR框架所需的Java类库,使得前端JavaScript能够调用后端Java方法,实现动态更新网页而无需刷新整个页面。 DWR的核心特性包括: 1. **反向Ajax(Reverse Ajax)**:DWR允许...
DWR的核心功能是提供了一种方式使得JavaScript能够调用服务器端的Java方法,就像是在本地调用一样。这极大地简化了富互联网应用(RIA)的开发,使得开发者可以在客户端实现复杂的业务逻辑,同时保持服务器的控制能力...
DWR通过在服务器端设置代理,将Java方法暴露给客户端的JavaScript代码,简化了前后端交互的过程。在这个聊天室中,DWR可能被用来创建一个Java服务,处理客户端发送的消息并广播到所有在线用户。 这个项目的具体实现...
在DWR中,服务器端的Java方法可以通过Ajax调用透明地暴露给JavaScript,使得页面无需刷新即可更新内容。 至于`dwr.jar`,它是DWR库的Java档案文件,包含了所有必要的类和资源,用于在服务器上部署和运行DWR服务。在...
DWR(Direct Web Remoting)是Ajax技术的一种实现,它提供了一种简单的方式来在Java后端和JavaScript前端之间进行实时的、双向的通信。DWR使得开发者能够像调用本地JavaScript函数一样调用远程Java方法,极大地简化...
- 在`dwr.xml`中,你可以设置安全策略,限制哪些用户或角色可以访问特定的Java方法,确保应用的安全性。 4. **JavaScript API**: - DWR提供了一系列JavaScript接口,如`DWREngine`、`RemoteObject`等,用于在...
在JavaScript中,通过引入DWR自动生成的接口文件(如TestClass.js)和核心库(engine.js, util.js),可以直接调用`testClass.testMethod1()`执行方法。 2. **有简单返回值的JAVA方法调用** 配置与无参数情况相同...