小编典典

jQuery加载图像时异步false

ajax

我想给旋转的gif图像供用户使用jquery进行ajax调用时知道发生了什么。我必须使用async:false,因为否则代码会造成混乱,并且最终会导致会话变量变坏。这是我所拥有的(直到呼叫冻结屏幕后才显示gif。)

$('#status' + itemNum).html("<img width='14px' src='/style/images/spinner.gif'>");
if (foo == "bar") {
$.ajax({
   type:"POST",
   url: "foobar.html",
   async:false,
   data: "val1=" + escape(newValue) + "&val2=" + fieldName + "&val3=" + newValue2
   })
} else {
$.ajax({
   type:"POST",
   url: "foobar.html",
   data: "val1=" + escape(newValue) + "&val2=" + fieldName + "&val3=" + newValue3
   })
   document.getElementById('status' + itemNum).innerHTML = "SAVED";
}
$("#status" + itemNum).show();
setTimeout("fade_out('"+itemNum+"')", 1000);
}

在这种情况下,我只希望foo =
bar时异步。谁能让我知道为什么在调用之后加载spinner.gif。我认为这可能是因为微调器不在其他任何地方,并且加载时有所延迟,但是当多次调用(此时应该在缓存中)时,它仍然不显示,所以我很困惑。

谢谢!


阅读 199

收藏
2020-07-26

共1个答案

小编典典

这是不可能的。
由于Javascript在UI线程中运行,因此async: false将冻结浏览器,包括所有动画。


千万 不能 使用async: false

您需要修复代码以处理异步请求。

2020-07-26