2010-12-21 2 views
3

MVC2의 기본 제공되는 Ajax 기능을 사용하고 있습니다. 기본적으로 사용자는 검색어를 입력하고 모든 키를 누를 때마다 검색어에 대한 결과 집합이 표시됩니다. 거의 모든 경우에 정상적으로 작동하지만 때로는 서버가 단일 응답으로 약간 느려서 다음 키 스트로크의 결과가 이전보다 먼저 반환됩니다. 이전의 키 스트로크 결과 세트가 최종적으로 클라이언트에 리턴 될 때 실제로 보여 져야하는 더 새로운 검색 쿼리의 결과를 겹쳐 씁니다.레이스 조건 방지

<% using (Ajax.BeginForm("SearchUser", null, 
      new AjaxOptions() 
        { UpdateTargetId = "findUserResults" }, 
      new { id = "findUserAjaxForm" })) {%> 

모든 키 입력을 제출이 양식을 따라서 'findUserResults'요소에 결과를 출력합니다

내 코드는이 라인을 따라 더 많거나 적은 다음과 같습니다.

MVC2에서 제공하는 내장 함수를 계속 사용하면서 이전 결과가 표시되지 않도록하려면 어떻게합니까?

+0

ASP MVC의 Ajax 작동 방식을 모르지만 다음 Ajax 호출을 시작하기 전에 이전의 Ajax 호출을 중단 할 수 없었습니까? – rossisdead

답변

0

각 요청마다 타임 스탬프를 보내고 결과와 함께 반환 할 수 있으며 타임 스탬프가 이전 요청보다 길면 결과 만 표시 할 수 있습니다.

new Date().getTime() 

은 신기원이 시작된 이래로 밀리 초를 반환합니다.

또는 각 페이지에서 증분 카운터를 사용할 수도 있습니다.

+0

"MVC2에서 제공하는 내장 함수를 계속 사용하면서 이전 결과가 표시되지 않도록하려면 어떻게해야합니까?" 당신의 솔루션은 처음부터 모든 것을 구축해야 할 것입니다. –

+0

JSON 결과 및 클라이언트 측 템플릿을 사용하여이 작업을 수행하는 것이 좋습니다.하지만 그렇게 좋은 행운을 쌓지는 않았습니다. – Ryan