一、用法
jquery的load函數是請求另一個檔案並載入到當前DOM裡的調用,load方法的完整格式是:load( url, [data], [callback] )(注意沒有參數是GET方式請求,有參數則是 POST方法)。
* url:是指要匯入檔案的地址。
* data:選擇性參數;因為Load不僅僅可以匯入靜態html檔案,還可以匯入動態指令碼,例如PHP檔案,所以要匯入的是動態檔案時,我們可以把要傳遞的參數放在這裡。
* callback:選擇性參數;是指調用load方法並得到伺服器響應後,再執行的另外一個函數。
緩衝這東西,在一定程度上加快了頁面的裝載,但是也常常給我們帶來麻煩。我在上篇文章裡簡單介紹了jQuery中Load方法的使用。在實際運用中,我們可能會碰到瀏覽器緩衝的問題。比如我就在IE7裡碰到這個問題。
jQuery Load樣本代碼:
複製代碼 代碼如下:
$(document).ready(function(){
$("#labels").load("/blog/categories/labels.html");
//在頁面裝載時,在ID為#labels的DOM元素裡插入labels.html的內容。
});
當我更新了labels.html以後,在IE7裡load方法仍舊在使用舊的labels.html,就算我按重新整理鍵也不管用。好在jQuery提供一個防止ajax使用緩衝的方法,把下面的語句加在head的javascript檔案裡,就可以解決問題。
複製代碼 代碼如下:
$.ajaxSetup ({
cache: false //關閉AJAX相應的緩衝
});
此外我再介紹幾種方法解決緩衝的方法。注意:我沒有在jQuery load的問題上測試過,這些方法僅供參考!
1.變更檔名,比如把labels.html改成lables_new.html,但是這是沒有辦法的辦法,一般沒有人這麼做。
2.在labels.html後加上特定時間,比如lables.html?20081116。在實際工作中,在我更新css/javascript檔案後,我都是用這種辦法來防止檔案被緩衝。
3.在labels.html檔案的頂部加入以下聲明:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
4.load函數不僅可以調用HTML,也可以調用script,比如labels.php,可以在php檔案裡使用header函數:
複製代碼 代碼如下:
<?php
header("Cache-Control: no-cache, must-revalidate");
?>
另外兩種解決方案:
在請求路徑中添加一個時間參數值為當前的時間或者在表單中添加一個隱藏的欄位將該欄位的值設定為目前時間。