2012-03-05 4 views
1

저는 ASP.NET MVC 3을 사용하여 비즈니스 게임을 호스팅하는 웹 애플리케이션을 만듭니다. 설치 부분에서는 게임을 할 여러 팀을 만들어야합니다. 동적으로 팀을 추가하려면이 스크립트를 사용합니다.

$("#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

감사합니다. 완벽하게 작동합니다. :) –

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()을 사용하면 모든 옵션에 쉽게 액세스 할 수 있습니다.

관련 문제