部分视图中未定义Javascript函数

时间:2016-02-26 02:10:59

标签: javascript asp.net-mvc-5 asp.net-mvc-partialview

我有一个像这样的部分观点:

@model Blah.Blah.ThisModel

<script type="text/javascript">
    $.getScript("/Scripts/Pages/ReferralEdit.js");
    initReferralEdit();
</script>

@* blah blah rest of view here *@

然后在我的ReferralEdit.js外部文件中,我有以下内容:

console.log('external loading');

function initReferralEdit() {
    console.log('function is here');
}

当加载它作为主路径(非Ajax)时,这很好。通过Ajax加载时,在页面加载时检查控制台时,我得到以下内容:

Uncaught ReferenceError: initReferralEdit is not defined
external loading

所以,我知道正在加载文件,因为第一个console.log()正在点火,但该功能似乎不可用。

任何人都可以解释原因吗? (以及为什么在external loading输出之前错误显示在Chrome的日志上?)如何添加这些功能以便它们“注册”或“在正确的范围内”或者我不知道的是什么?

(我已经花了好几个小时试图找出如何在局部视图上加载JS,而且我总是坚持不定义这些函数......)

1 个答案:

答案 0 :(得分:2)

在尝试调用文件中的任何方法之前,您需要确保文件已完全加载。尝试以下内容:

$.getScript( "/Scripts/Pages/ReferralEdit.js" )
  .done(function( script, textStatus ) {
     initReferralEdit();
  })
  .fail(function( jqxhr, settings, exception ) {
    console.log('failed to load script');
});