2010-03-27 4 views
1

나는 클라이언트 컨트롤러 테스트 및 MVC 행동이라는 사업부를Javery로드를 사용하여 adiv에 내용을로드 하시겠습니까?

뷰 :

<input id="B1" type="button" value="test" /> 
    <div id="test"> 
</div> 

내가 사업부

를 업데이트 할 jQuery를 사용하고

public string testout() 
{ 
    return DateTime.Now.ToString(); 
} 

컨트롤러

$("#B1").live("click", function() { 
    $("#test").load("/client/testout"); 
    return false; 
}); 

처음 버튼을 클릭하면 날짜와 시간이 표시됩니다. div 테스트에서 ime. 두 번째 아무것도 바뀌지 않습니다. 어떤로드 전에 jQuery 코드에서이 배치

+2

그것은 당신의 행동이 캐시되는 것을 가능을? – Paddy

+0

HTML을 게시 할 수 있습니까? –

+0

작업이 캐시되지 않았는지 확인하기 위해'$ ("# test") .load ("/ client/testout?"+ new Date(). getTime());을 사용하십시오. –

답변

3

시도가 발생

$.ajaxSettings.cache = false; // or $.ajaxSetup({ cache: false }); 

이 요청을 캐시에서 클라이언트를 방지 할 수 있습니다. 그래도 작동하지 않는다면 문제는 캐시 된 출력을 제공하는 서버입니다.

+0

는 $ .ajaxSetup ({거짓 캐시})하면 그게 저와 함께 잘 작동 감사합니다 –

+0

+1 감사합니다. : D 같은 문제가 해결되었습니다! – Jonathan

0

ASP.NET MVC에서는 작업이 ActionResult을 반환하는 것이 좋습니다. 다음과 같이 코드를 수정 시도하고 어떤 차이가 있는지 확인 :

public class ClientController: Controller 
{ 
    public ActionResult TestOut() 
    { 
     return Content(DateTime.Now.ToString(), "text/plain"); 
    } 
} 

과 JS :

$(function() { 
    $('#B1').live('click', function() { 
     $('#test').load('/client/testout'); 
     return false; 
    }); 
}); 
+0

반품 false의 의미는 무엇입니까? .live() 이벤트가 이상한 방법으로 거품을 띠게합니까? – JKirchartz

+0

'# B1'이 앵커 인 경우 (OP가 마크 업을 표시하지 않았으므로 여기서 알 수 없음) 링크를 클릭하면 AJAX 호출을 할 수있는 기회가 남지 않은 다른 페이지로 리디렉션됩니다 실행하다. –

+0

B1 div 코드가 첫 번째 클릭에서 잘 작동하지만 두 번째 클릭하면 날짜가 아무 것도 나타나지 않고 이전 날짜가 여전히 div b1에 나타나고 디버거가 테스트 작업을 수행하지 않았을 것으로 기대합니다. –

관련 문제