所以我有一個列表頁面是這樣的:禁用所有點擊事件,直到AJAX請求完成
//start loop
<div id ='row-prd-<number>'>
<strong>product Name</strong>
<a href='#' id='edit-prd-<number>'>Edit</a>
<a href='#' id='delete-prd-<number>'>Delete</a>
</div>
//end loop
在我的JavaScript,我做這樣的事情:
$('#delete-prd-<number>').click()
{
//change style of the row to show its being deleted..
$('row-prd-<number>').addClass('deleting');
//make ajax call to delete
ajaxDeleteRecord(prd-<number>);
}
現在,這個工作正常。我擔心的是,在較低的連接速度情況下,刪除ajax呼叫需要幾秒鐘才能完成。我擔心如果用戶點擊另一條記錄的編輯或刪除按鈕會發生什麼情況。所以我有三個問題:
1.我應該禁用頁面上的所有點擊事件,直到ajax調用返回? 對我來說,這似乎不是一個好的選擇 - 假設ajax調用出錯......在這種情況下,用戶現在處於他/她無法再點擊頁面中任何內容的狀態!
2.我該如何處理? ...我有點不知道該怎麼做。我想這是我有三個問題中最重要的。
1.如果我必須禁用並重新啓用頁面上元素的點擊(編輯/刪除/新建),有沒有簡單的方法來做到這一點? ...只是好奇...
怎麼樣讓你的AJAX調用同步?在AJAX調用返回之前,它會阻止其他所有內容。 – mguijarr
嗯...這是一個非常好的建議。我想我將不得不處理在任何情況下破壞的ajax響應...... –
考慮處理錯誤情況,而不是通過使請求同步來使瀏覽器無響應。查找'$ .ajax()'中的'error'回調選項' – techfoobar