在AJAX请求完成后,如何调用PartialView中定义的JavaScript函数?

时间:2009-06-09 19:54:00

标签: javascript asp.net-mvc asp.net-ajax

以下是我的部分观点:

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

在我的页面上,我有一个调用控制器操作的链接来呈现局部视图:

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

这是我的控制器操作: ...     返回PartialView(“TestControl”); ...

我认为这很简单。不幸的是,我收到了JavaScript错误:

  

Microsoft JScript运行时错误:'myFunction'未定义。

当我在AJAX调用后检查生成的页面源时,我可以在源代码中看到myFunction。但是,在AJAX的OnSuccess中,不知何故它不知道这个函数。有什么我错过了吗?有没有办法可以调用脚本,它是通过AJAX加载的局部视图的一部分? (我试图使用eval(),不知何故我无法解析该函数​​。)

提前致谢。

1 个答案:

答案 0 :(得分:0)

OnSuccess可能在将部分视图注入DOM之前发生;你可能最好在定义后立即调用myFunction

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

这样,myFunction在定义之后立即被调用(因为部分视图逻辑将脚本引用注入到DOM中,所以在实际更新局部视图之后会尽快调用它)。

如果myFunction对部分视图的内容进行操作,则可能必须将脚本引用移动到局部视图的末尾,以便在执行JS之前呈现其操作的DOM。 / p>