2012-03-05 91 views
1

我正在使用ASP.NET MVC 3創建一個託管商業遊戲的Web應用程序。 在設置部分,我必須創建多個小組來玩遊戲。 要動態添加隊我使用這個腳本。

$("#addTeam").click(function() { 
     $.get("@Url.Action("NewTeam","Admin")", function (template) { 
      $("#teams").append(template); 
     }); 
    }); 

在後臺調用我的控制器中的方法。在這種方法中,我生成了一個新的viewmodel實例,然後爲每個團隊創建一個新的(隨機)顏色。 如果我在Firefox中測試,我會爲每個團隊獲得不同的顏色。 但是,當我在Internet Explorer中測試它時,我只爲所有團隊獲得一種顏色。 我的控制器動作也只被調用一次。

有沒有人見過這種行爲?它看起來像Internet Explorer每次單擊鏈接時都不會執行HTTP獲取。

感謝您的幫助。

回答

2

看起來像一個緩存問題。嘗試破壞緩存:

$.get("@Url.Action("NewTeam","Admin")" + new Date().getTime(), function (template) { 
    $("#teams").append(template); 
}); 

或:

$.ajax({ 
    url: "@Url.Action("NewTeam","Admin")", 
    cache: false, 
    success: function(template) { 
     $("#teams").append(template); 
    } 
}); 
+0

謝謝你們。完美的作品。 :) – 2012-03-06 07:40:58

0

當您使用獲取的瀏覽器是非常聰明,它只是緩存數據。要解決這個問題,請禁用緩存或生成一些隨機字符串作爲查詢字符串到您的URL

0

IE對緩存ajax請求非常積極。你得到的只是告訴jQuery的要關閉緩存:

$.ajax({ 
    url: "@Url.Action("NewTeam","Admin")", 
    success: function(template) { 
     $("#teams").append(template); 
    }, 
    type: "GET", 
    cache: false 
}); 

所有的選項都記錄在這裏:http://api.jquery.com/jQuery.ajax/$.get()只是$.ajax()的簡寫形式,某些選項已爲您默認。 $.ajax()可讓您更輕鬆地訪問所有選項。