使用ajax非同步方式作內容編輯儲存,會發現同樣的操作次數越多,啟用程式速度越慢,最後整個程式就卡住不動了,像下面這樣的範例:
重複點選編輯
然後儲存,大概操作3次以上瀏覽器就會卡住!
解決方法只要在$.ajax加上cache,ifModified,async設定即可解決瀏覽器積存問題
function invoiceajaxbox($id,$suid,$invoiceid,$html,$receiverreturn,$list){
$.ajax({
url: xoopsjsurl + '/modules/neillibrary/ajax.php',
type: 'POST',
data: { id: $id,
suid:$suid,
invoiceid:$invoiceid,
list:$list,
receiverreturn:$receiverreturn
},
cache:false,
ifModified :true ,
async:false,
success: function(response) {
$($html).html(response);
},
error: function() {
console.log('ajax error!');
}
})
}
加上紅字設定後,這樣即使用同樣操作100次瀏覽器也不會卡住,有需要的朋友參考看看!!
備註:只有在AJAX檔中呼叫的JS檔中執行的$.ajax才需要加上async:false, 啟用同步請求
教學撰寫:徐嘉裕 Neil hsu
重複點選編輯
然後儲存,大概操作3次以上瀏覽器就會卡住!
解決方法只要在$.ajax加上cache,ifModified,async設定即可解決瀏覽器積存問題
function invoiceajaxbox($id,$suid,$invoiceid,$html,$receiverreturn,$list){
$.ajax({
url: xoopsjsurl + '/modules/neillibrary/ajax.php',
type: 'POST',
data: { id: $id,
suid:$suid,
invoiceid:$invoiceid,
list:$list,
receiverreturn:$receiverreturn
},
cache:false,
ifModified :true ,
async:false,
success: function(response) {
$($html).html(response);
},
error: function() {
console.log('ajax error!');
}
})
}
加上紅字設定後,這樣即使用同樣操作100次瀏覽器也不會卡住,有需要的朋友參考看看!!
備註:只有在AJAX檔中呼叫的JS檔中執行的$.ajax才需要加上async:false, 啟用同步請求
教學撰寫:徐嘉裕 Neil hsu
若設定 async:false,(同步而非異步) 如果要ajax呼叫的資料太多 有可能網頁會被鎖死
回覆刪除只有在AJAX(ajax.php)檔案裏面需要呼叫的JS檔才要下async:false,一般頁面觸發是不用的!!
回覆刪除非同步->同步->非同步~這樣的邏輯~您參考看看!!
回覆刪除謝謝
回覆刪除