2011-01-20 66 views
0

我遇到問題。從緩存中停止javascript

我正在使用zend創建一個web應用程序,我遇到了我的jquery和javascripts的問題。

我有一個頁面顯示了在腳本標記頁面上寫的jQuery代碼的順序。

我正在使用jQuery $ .post來加載網站上的每個頁面。

我的問題是,當你選擇一個新的訂單頁面(第一次訪問訂單頁面)時,然後點擊一個按鈕,打開一個jquery對話框,以添加信息順序正確的post變量發送;但如果您接着執行另一個命令並再次單擊該添加按鈕,則會發送先前順序的發佈變量。

我假設之前的javascript信息已被緩存。如果我清空我的緩存它再次順序工作正常,但在它後面的順序上失敗。

我正在使用PHP將問題變量(訂單ID)粘貼到內嵌JavaScript代碼中。

我猜這是我的失敗。

我不明白的是javascript對頁面的初始加載很好,因爲它然後會使用ajax來獲取頁面的更多部分。這工作正常,但是當我使用我的按鈕時,它會恢復到開始時使用的原始訂單ID。

附件是我的代碼:

function getFreightTable() 
    { 
     $.post("order/freighttable", "OrderID=<?= $this->orderID; ?>" , function(data){ 
      $("#tabs-3").html(data); 
     }); 
    } 

    $("#OrderAddFreightButton").live('click',function() { 
     $.post("freight/new", "OrderID=<?= $this->orderID; ?>", function(data) { 
      $("#orderAddFreightDialog").html(data); 
      $("#orderAddFreightDialog").dialog({  
       autoOpen: true, 
       hide: 'slide', 
       show: 'slide', 
       title: 'Add New Freight Information', 
       closeOnEscape: true, 
       close: function(event, ui) 
       { 
        $("#orderAddFreightDialog").empty(); 
        getFreightTable(); 
       } 
      }); 
     }); 
     return false; 
    }); 

我的PHP是把正確的順序編號的代碼中,但JavaScript是恢復到一個較舊的一套。

我有一個類似的問題,該網站的另一部分和JavaScript恢復到3個星期前的JavaScript代碼,即使我在不​​同的計算機上使用它並清除緩存。這嚇壞了我。

+3

您的JS可能有問題,但我懷疑這是JS緩存問題。去你的客戶機上找Fiddler2。當你瀏覽你的網站時,它可以解釋像這樣奇怪的問題。 – 2011-01-20 03:25:35

+0

問題在於別處。 `POST`沒有被緩存。 – 2011-01-20 03:44:17

回答

4

您可以使用jQuery的.ajax()指定cache: false,這將迫使該請求不緩存請求 - 請注意,您必須重寫你的函數不再使用$.post,而使用$.ajax。如果你不想做,你也可以添加到您的網址,以欺騙瀏覽器:

$.post("url...?c=" + Math.random()) 

這不是做事情的最好方法,但他們都工作。

0

我已經試過cache : false

我試圖在最後加上隨機獲取變量。

我知道帖子沒有被緩存,但是每個頁面上的JavaScript必須是因爲正在使用的JavaScript是從頁面的初始視圖開始的第一個版本。