我想给旋转的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。我认为这可能是因为微调器不在其他任何地方,并且加载时有所延迟,但是当多次调用(此时应该在缓存中)时,它仍然不显示,所以我很困惑。
谢谢!
这是不可能的。 由于Javascript在UI线程中运行,因此async: false将冻结浏览器,包括所有动画。
async: false
您需要修复代码以处理异步请求。