jquery在异步错误时加载图像

one*_*ent 2 javascript ajax jquery gif

我希望为用户提供一个旋转的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);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我只想要foo = bar时的异步.任何人都可以告诉我为什么spinner.gif在通话后加载.我想这可能是因为微调器不在其他任何地方并且加载它有一个延迟,但是当它被多次调用时它仍然没有出现(到那时应该在缓存中),所以我很难过.

谢谢!

SLa*_*aks 9

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


千万不能使用async: false!

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

  • 是; 禁用按钮. (2认同)