2009-06-09 73 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

相关问题