问一个关于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在异步还没返回数据,就往下执行(回调函数赋值,往下执行),导致数据出错