问一个关于jquery 异步的疑惑?求助? 400 报错
不知道大家有没遇到过这样的问题,一个function里面含有jquery异步,会导致某些js或jquery代码执行会有问题,例如执行异步时,不是按步骤执行,在异步还没返回数据,就往下执行(回调函数赋值,往下执行),导致数据出错,还有就是这样一个问题。
function insertData(event) { if(printFlag == false){ // changeStat(); // alert('aa'); changeStat(); var obj = window.dialogArguments; if(obj.asName=='DanweiCbzm.pdf'){ var url = 'writeDWCBZM?sbid='+obj.sbid+'&toNY='+obj.toNY+'&fromNY='+obj.fromNY+'&xtls='+obj.xtls+'&pch='+obj.pch+'&nsbm='+obj.nsbm+'&num='+Math.random(); $.post(url,function(data){ if(data.indexOf('success')==-1){ alert(data); }else{ upSuccess(); } }); }else if(obj.asName=='DwryCbzm.pdf'){ upSuccess(); }else if(obj.asName=='GenrenCbzm.pdf'){ var url = 'writeGRCBZM?sbid='+obj.sbid+'&toNY='+obj.toNY+'&fromNY='+obj.fromNY+'&xtls='+obj.xtls+'&pch='+obj.pch+'&num='+Math.random(); $.post(url,function(data){ if(data.indexOf('success')==-1){ alert(data); }else{ upSuccess(); } }); } changeStat(); } } function upSuccess(){ printFlag = true; window.returnValue=true; // var url = 'PdfDownload?fileName='+event.data.filename; // $('#down').attr('href',url); $('#printBut').unbind('click').removeAttr('onclick').click(function(){pdf.print();}); $('#genBut').unbind('click').removeAttr('onclick').click(function(){alert('证明已生成,请点击“下载打印”进行下载');}); if(event=='print'){ pdf.print(); } $('#downBut').show(); } function printPdf(){ pdf.print(); } function show(){ $('#stat').toggle(); } function changeStat(){ $('#but').toggle(); $('#stat').toggle(); } <div align="center" > <div id="but" style="margin-top: 10px;"> <input class="btn2" type="button" id="printBut" value="打印" onclick="insertData('print');" /> <input class="btn2" type="button" id="genBut" value="生成证明" onclick="insertData('down');" /> <input class="btn2" type="button" id="downBut" value="下载打印" style="display:none;" onclick="downPdf();" /> <a id="down" style="display:none;" ><span>aaab</span></a> <input class="btn2" type="button" value="关闭" onclick="window.close();" /> </div> <div id="stat" style="display: none;font-size: 13px;line-height: 13px;vertical-align: middle; "><img src="${path}/images/indicator.gif"/> 服务器正在处理,请稍后......</div>
上面代码中,changeStat()不会执行,可以说是跳过执行,但是如果在changeStat()附近alert一下,它又执行了,或者我吧异步注释了也会执行,我尝试过$().show()和$().hide(), 连.css('display','none')这些都是一样效果,不知道大家有没遇到过这样的问题?谢谢
如果不往下执行 那还叫什么异步?######回复 @Ever_ : 那你后面的代码 也要写在回调方法里 否则 异步有什么意义######本来就这样的啊,这就是异步啊######例如我定义 var a=false; 异步时回调函数改 a=true;,但是下面异步还没执行完就alert(a); 结果 a的值是false;不信你可以试试 后台线程睡眠5秒就可以了######ajax中加 async :false在异步还没返回数据,就往下执行(回调函数赋值,往下执行),导致数据出错
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。