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

[color=green]setTimeout();dwr.engine.setAsync();[/color]


前台做了个修改页面,希望实现三个下拉菜单初始化,并且可以再次重选。
[color=red]初始化代码如下:[/color]
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方法异步
}

[color=red]遇到问题,解决方法:[/color]
最开始没有设置同步,发现方法里面不alert();不能初始化,不明所以,然后百度得到解释,selectJdSqWg()方法执行要在initSelectQ()执行完成之后才能正常调用,说是要使用setTimeout(selectJdSqWg, 500);方法。最开始500设置的是1,结果dwr读取数据后的回调函数越复杂,时间就要设的越大,对于页面显示有迟缓,然后把函数里面两个ajax方法都设置为同步,可以正常初始化了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值