2009-06-09 2 views
1

가 여기 내 부분이다 : 내 페이지에서AJAX 요청이 완료된 후에 PartialView에 정의 된 JavaScript 함수를 호출하려면 어떻게해야합니까?

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<script type="text/javascript"> 
    function myFunction() { .... } 
</script> 
....other html content ... 

, 나는 부분 뷰를 렌더링하는 컨트롤러 액션을 호출하는 링크가 :

<%= Ajax.ActionLink(..., new AjaxOptions { ..., OnSuccess = "myFunction" }) %> 

이 내 컨트롤러 액션입니다 : .. return PartialView ("TestControl"); ...

나는 이것이 꽤 솔직하게 생각했습니다. 내가 AJAX 호출 후 생성 된 페이지의 소스를 검사 할 때

Microsoft JScript runtime error: 'myFunction' is undefined.

, 나는 소스에 myFunction을 볼 수 불행히도, 난 자바 스크립트 오류가 발생합니다. 그러나 AJAX의 OnSuccess에서는 어떻게 든이 함수에 대해 알지 못합니다. 내가 놓친 것이 있습니까? AJAX를 통해로드 된 부분 뷰의 일부인 스크립트를 호출 할 수있는 방법이 있습니까? (eval()을 사용해 보았는데, 어떻게 든이 문제를 해결할 수 없었습니다.)

미리 감사드립니다.

답변

0

부분 뷰를 DOM에 삽입하기 전에 OnSuccess가 발생할 수 있습니다. 당신은 즉시 정의한 후 myFunction를 호출 더 좋을 수 있습니다

function myFunction(){ 
    //code here 
} 
myFunction(); 

그 방법은, myFunction 스크립트 참조가 부분보기 로직에 의해 DOM에 주입되기 때문에, 즉시, 그 정의 (후 즉시 호출됩니다 부분 뷰의 실제 업데이트 이후 가능한 한).

부분보기의 내용에 대해 myFunction이 작동하는 경우 부분 참조의 끝으로 스크립트 참조를 이동해야 JS가 실행되기 전에 DOM이 작동하는 DOM이 렌더링됩니다.

+0

실제로 직접 호출하는 방법을 모르겠다. 내가 할 수 있기 전에 아약스 요청이 완료 될 때까지 기다려야한다. 그렇게하는 방법을 보여 주시겠습니까? 감사. 명확한 답변을 위해 – user119961

+0

답변이 수정되었습니다. 후속 조치 주셔서 감사합니다! –

관련 문제