2012-03-05 15 views
1

私はASP.NET MVC 3を使用してビジネスゲームをホストするWebアプリケーションを作成しています。 セットアップの部分では、ゲームをプレイするために複数のチームを作成する必要があります。 チームを動的に追加するには、このスクリプトを使用します。

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

これはバックグラウンドで、私のコントローラのメソッドを呼び出します。その方法では、自分のビューモデルの新しいインスタンスを生成します(私の順番に)各チームの新しい(ランダムな)色を作成します。 Firefoxでこれをテストすると、チームごとに色分けができます。 しかし、Internet Explorerでテストすると、すべてのチームに1つの色しか得られません。 コントローラの動作も一度だけ呼び出されます。

誰もこの行動を以前に見たことがありますか? Internet ExplorerがリンクをクリックするたびにHTTPを実行していないようです。

ありがとうございました。

答えて

2

キャッシングの問題のようです。あなたは、ブラウザはそれだけで、あなたのデータをキャッシュすることをとてもスマートで取得し使用していたよう

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

ありがとうございます。完璧に動作します。 :) –

0

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

か:キャッシュをつぶしてみてください。これを解決するには、キャッシュを無効にするか、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()を使用すると、すべてのオプションに簡単にアクセスできます。

関連する問題