2009-06-09 74 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」); ...

我認爲這是非常直接的。不幸的是,我得到的JavaScript錯誤:

Microsoft JScript runtime error: 'myFunction' is undefined.

當我AJAX調用後檢查生成的頁面源代碼,我可以看到myFunction源。但是,在AJAX的OnSuccess中,它不知道這個函數。有什麼我錯過了嗎?有什麼方法可以調用通過AJAX加載的部分視圖的腳本? (我曾嘗試使用eval(),但我無法解決此功能。)

在此先感謝。

回答

0

OnSuccess可能發生在部分視圖注入DOM之前;定義後立即您可能會關閉主叫myFunction更好:

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

這樣,myFunction被其定義(其中,因爲腳本引用注入由局部視圖邏輯的DOM,是儘快之後立即調用盡可能在部分視圖的實際更新之後)。

如果myFunction對局部視圖的內容進行操作,則可能必須將腳本引用移動到局部視圖的末尾,以便在執行JS之前呈現其操作的DOM。

+0

我實際上不知道如何直接調用它:我需要先等待ajax請求完成,然後才能這樣做。你能告訴我該怎麼做嗎?謝謝。爲清晰起見編輯 – user119961 2009-06-10 14:37:09

相關問題