我有一些按鈕點擊運行的Ajax。有時需要幾秒鐘的時間才能返回,所以我想讓用戶知道瀏覽器正在做什麼。爲什麼在使用JQuery嘗試更改IE中某個按鈕上的文本時存在時間延遲?
所以,我有這樣的:
$('#SubmitButton').attr("value", "Working...");
$('#SubmitButton').attr("disabled", true);
//Synchronous Ajax call goes here
$('#SubmitButton').attr("value", "Submit");
$('#SubmitButton').attr("disabled", false);
正如你所看到的,它改變按鈕上的文本,並禁用它。當Ajax調用回來(它是同步的,請記住),該按鈕變回。
在Firefox中,這很好用。
在IE中,它很奇怪。它不會按順序運行代碼。它不會更改按鈕的文本,並直接啓動Ajax調用。瀏覽器會阻止提交活動並說「提交」。
右鍵阿賈克斯回來後,按鈕快速閃爍「工作......」然後回到提交「。
所以,出於某種原因,IE瀏覽器後不改變按鈕的文字,直到 Ajax調用,即使它的代碼是之前 Ajax調用
它的作用是這樣的:再次
//Synchronous Ajax call goes here
$('#SubmitButton').attr("value", "Working...");
$('#SubmitButton').attr("disabled", true);
$('#SubmitButton').attr("value", "Submit");
$('#SubmitButton').attr("disabled", false);
,這個完美的作品在Firefox。但在IE中,有某種...滯後?
爲什麼不使用回調? $ .post(url,function(){// callback})? – Skawful 2010-01-08 23:30:38
只是爲了偏執,你的AJAX調用是什麼樣子?你使用jQuery.ajax的「async」選項爲true,還是使用$ .get? – Parrots 2010-01-08 23:34:15