2011-04-13 2 views
0

내 데이터베이스의 데이터를 기반으로하는 ViewModels 목록이있는보기가 있습니다. 이 목록을 제시하지만 데이터베이스의 데이터가 변경되면 지정된 간격 (5 초)마다 목록을 새로 고치고 싶습니다. ViewModels를 업데이트하는 컨트롤러에 Action이 있습니다. MVC 3과 면도기를 사용합니다. JavaScript/jQuery가 필요합니다. 간격 mvc에 뷰 모델을 새로 고침

내 스크립트를

<script type="text/javascript"> 
$(document).ready(function() { 
    var hdRaceId = $("#hdRaceId"); 

    setInterval("GetList()", 5000); 
    function GetList() { 
     $.get("/Timer/Update/?id=" + hdRaceId.val()); 
    } 

내 컨트롤러에서 내 작업 :

 public ActionResult Update(int id) 
    { 
     var raceintermediates = RaceIntermediateModel.GetRaceintermediatesForRace(id); 
     return View("Speaker", raceintermediates); 
    } 

답변

3

DOM의 일부를 새로 고치려면 AJAX 요청에 대한 성공 콜백을 정의해야합니다. 이처럼 :

<div id="someDivId"></div> 

또한 IE와 같은 일부 브라우저는 GET 요청을 캐시 있습니다 당신이 부분 뷰 결과를 개최합니다 일부 사업부를

window.setInterval(function() { 
    var hdRaceId = $('#hdRaceId').val(); 
    var updateUrl = '@Url.Action("Update", "Timer")'; 
    $.get(updateUrl, { id: hdRaceId }, function(result) { 
     $('#someDivId').html(result); 
    }); 
}, 5000); 

. 이를 피하기 위해 다음을 사용할 수 있습니다.

window.setInterval(function() { 
    var hdRaceId = $('#hdRaceId').val(); 
    var updateUrl = '@Url.Action("Update", "Timer")'; 
    $.ajax({ 
     url: updateUrl, 
     type: 'GET', 
     data: { id: hdRaceId }, 
     cache: false, 
     success: function(result) { 
      $('#someDivId').html(result); 
     } 
    }); 
}, 5000); 
+0

그것은 저에게 감사했습니다. D – Arnstein

0

에서는 setTimeout (GetRefereshedList, 5000);

및 GetRefreshedList에서 $ .ajax() 메서드를 사용하여 서버에서 새 목록을 가져 와서 클라이언트 측에서 모두보기를 업데이트 할 수 있습니다.

코드를 공유 할 수 있다면 좀 더 확장 할 수 있습니다.

+0

setInterval ("GetList()", 5000); 따옴표로 "GetList()"가 정의되지 않았고 따옴표를 삭제하면 따옴표를 잊어 버렸는지 묻는 또 다른 오류 메시지가 나타납니다. – Arnstein

+0

도움을 주셔서 감사합니다, 당신은 나를 올바른 길에 올려 놓습니다 :) – Arnstein

관련 문제