`

js---dwr ajax方法设置同步

    博客分类:
  • JS
阅读更多
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方法都设置为同步,可以正常初始化了。
分享到:
评论

相关推荐

    ---------DWR中文文档

    Direct Web Remoting (DWR) 是一个开源Java库,它允许Web应用程序在客户端JavaScript和服务器端Java代码之间进行实时通信,无需使用XMLHttpRequest或JSONP等传统Ajax技术。DWR通过提供一套简单易用的API,使得开发...

    dwr.jar/dwr-2.0.5-src.zip/dwr.zip

    - **自动更新**:当服务器端的类或方法改变时,DWR可以自动更新客户端的JavaScript代码,确保客户端始终与服务器保持同步。 - **安全控制**:DWR有内置的安全机制,如CSRF防护和IP白名单,以防止未授权的访问。 -...

    即时通讯DWR Reverse Ajax

    使用DWR实现Reverse Ajax,首先需要在服务器端配置DWR,包括创建DWR的配置文件dwr.xml,设置允许访问的Java方法。然后在客户端,使用JavaScript的DWR API创建连接并注册回调函数,以接收服务器推送的数据。在服务器...

    dwr ajax完整示例,内有dwr配置说明文档,eclicps工程

    4. **客户端调用**:如何在HTML/JavaScript中使用DWR API来调用服务器端的方法,包括异步和同步调用方式。 5. **CORS支持**:如果需要跨域通信,DWR如何支持CORS(Cross-Origin Resource Sharing)配置。 6. **调试...

    dwr Ajax框架

    在Ajax技术中,DWR扮演着核心角色,它通过JavaScript对象来封装Java方法,这样在前端JavaScript代码中,可以像调用本地函数一样调用远程服务器的方法。这提升了用户体验,因为用户可以在不刷新整个页面的情况下获取...

    ajax_dwr实现页面无刷新加载

    DWR(Direct Web Remoting)是Java后端与JavaScript前端之间进行实时通信的一种框架,它简化了Ajax应用的开发,让开发者可以像调用本地方法一样调用服务器端的方法。 **DWR的介绍** DWR允许JavaScript在客户端直接...

    AJAX DWR基本使用向导

    这里的`/dwr/interface/MyService.js`和`/dwr/engine.js`是DWR自动生成的文件,它们提供了调用后端方法的API。`DWREngine.setAsync(false)`设置了请求模式为同步,然后`MyService.getGreeting`调用就会阻塞直到...

    ajax-DWR教程讲义.rar

    **Ajax(Asynchronous JavaScript and XML)**是一种在无需重新加载整个网页的情况下,...通过深入学习“ajax-DWR教程讲义.rar”中的资源,你将能够理解Ajax的基本原理,熟悉DWR的使用方法,并能将其应用到实际项目中。

    DWR(包括engine.js+util.js).rar

    为了使用DWR,开发者需要在服务器端配置DWR引擎,定义允许访问的Java类和方法,并在客户端引入`engine.js`和`util.js`。然后,通过JavaScript代码就可以直接调用服务器端的方法,实现双向通信。 总之,DWR提供了一...

    dwr.rar_ajax_ajax jar

    5. **使用DWR**:使用DWR时,开发者可以创建Java服务器端接口,DWR会自动生成相应的JavaScript API,使得在客户端可以直接调用这些服务器方法,实现了远程方法调用(Remote Method Invocation)。 6. **DWR的功能**...

    dwr-src.zip

    Direct Web Remoting (DWR) 是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用Java方法,从而实现了富互联网应用(RIA)的功能。DWR通过Ajax技术提供了这种...

    js dwr框架jar包

    这个“js dwr框架jar包”包含了运行DWR框架所需的Java类库,使得前端JavaScript能够调用后端Java方法,实现动态更新网页而无需刷新整个页面。 DWR的核心特性包括: 1. **反向Ajax(Reverse Ajax)**:DWR允许...

    dwr-1.1.3-src.zip

    DWR的核心功能是提供了一种方式使得JavaScript能够调用服务器端的Java方法,就像是在本地调用一样。这极大地简化了富互联网应用(RIA)的开发,使得开发者可以在客户端实现复杂的业务逻辑,同时保持服务器的控制能力...

    一个ajax 和 dwr 框架的最简单2个应用--简易聊天室

    DWR通过在服务器端设置代理,将Java方法暴露给客户端的JavaScript代码,简化了前后端交互的过程。在这个聊天室中,DWR可能被用来创建一个Java服务,处理客户端发送的消息并广播到所有在线用户。 这个项目的具体实现...

    dwr服务器推送,dwr.jar,推送,服务器ajax,dwr服务推送例子

    在DWR中,服务器端的Java方法可以通过Ajax调用透明地暴露给JavaScript,使得页面无需刷新即可更新内容。 至于`dwr.jar`,它是DWR库的Java档案文件,包含了所有必要的类和资源,用于在服务器上部署和运行DWR服务。在...

    ajax_DWR 中文文档

    DWR(Direct Web Remoting)是Ajax技术的一种实现,它提供了一种简单的方式来在Java后端和JavaScript前端之间进行实时的、双向的通信。DWR使得开发者能够像调用本地JavaScript函数一样调用远程Java方法,极大地简化...

    一个DWR例子,直接导入eclipse可运行

    - 在`dwr.xml`中,你可以设置安全策略,限制哪些用户或角色可以访问特定的Java方法,确保应用的安全性。 4. **JavaScript API**: - DWR提供了一系列JavaScript接口,如`DWREngine`、`RemoteObject`等,用于在...

    dwr的用法解析

    在JavaScript中,通过引入DWR自动生成的接口文件(如TestClass.js)和核心库(engine.js, util.js),可以直接调用`testClass.testMethod1()`执行方法。 2. **有简单返回值的JAVA方法调用** 配置与无参数情况相同...

Global site tag (gtag.js) - Google Analytics