新增一個 AJAX 預載入器

這是一種在執行 AJAX 呼叫時顯示 GIF 預載入器的方法。我們需要準備新增和刪除預載入器功能:

function addPreloader() {
  // if the preloader doesn't already exist, add one to the page
  if(!document.querySelector('#preloader')) {
    var preloaderHTML = '<img id="preloader" src="https://goo.gl/cNhyvX" />';
    document.querySelector('body').innerHTML += preloaderHTML;
  }
}

function removePreloader() {
  // select the preloader element
  var preloader = document.querySelector('#preloader');
  // if it exists, remove it from the page
  if(preloader) {
    preloader.remove();
  }
}

現在我們來看看在哪裡使用這些功能。

var request = new XMLHttpRequest();

onreadystatechange 函式中你應該有一個條件為:request.readyState == 4 && request.status == 200 的 if 語句。

如果為 true :請求已完成且響應準備就緒,我們將使用 removePreloader()

否則,如果為 false :請求仍在進行中,在這種情況下,我們將執行 addPreloader() 函式

xmlhttp.onreadystatechange = function() {

  if(request.readyState == 4 && request.status == 200) {
    // the request has come to an end, remove the preloader
    removePreloader();
  } else {
    // the request isn't finished, add the preloader
    addPreloader()
  }

};

xmlhttp.open('GET', your_file.php, true);
xmlhttp.send();