AJAX IE7清除緩存

AJAX緩存頁面,就是相同的URL重複提交,只會執行第一次的,後面的不執行,這會給AJAX實時讀取數據帶來很大影響 
在網上找了好多資料後,總結一下 
1:在AJAX請求的頁面後加個隨機函數,我們可以使用隨機時間函數 
在javascript發送的URL後加上t=Math.random() 
當然,不是直接把t=Math.random()拷貝到URL後面,應該像這樣:URL+"&"+"t="+Math.random(); 
2:在XMLHttpRequest發送請求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0") 
一般情況下,這裏的XMLHttpRequest不會直接使用 
你應該可以找到這樣的代碼 
XXXXX.send(YYYYYY); 
那麼,就把它變成 
XXXXX.setRequestHeader("If-Modified-Since","0"); 
XXXXX.send(YYYYYY); 

第二種方法感覺挺好 


function send_request(url) {//初始化、指定處理函數、發送請求的函數
                    http_request = false;
                    //開始初始化XMLHttpRequest對象
                    if(window.XMLHttpRequest) { //Mozilla 瀏覽器
                            http_request = new XMLHttpRequest();
                            if (http_request.overrideMimeType) {//設置MiME類別
                                    http_request.overrideMimeType('text/xml');
                            }
                    }
                    else if (window.ActiveXObject) { // IE瀏覽器
                            try {
                                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                            } catch (e) {
                                    try {
                                            http_request = new ActiveXObject("Microsoft.XMLHTTP");
                                    } catch (e) {}
                            }
                    }
                    if (!http_request) { // 異常,創建對象實例失敗
                            window.alert("不能創建XMLHttpRequest對象實例.");
                            return false;
                    }
                    http_request.onreadystatechange = processRequest;
                    // 確定發送請求的方式和URL以及是否同步執行下段代碼
                    http_request.open("GET", url, true);
                    http_request.setRequestHeader("If-Modified-Since","0"); 
                    http_request.send(null);
            }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章