找不到我的javascript函数

找不到我的javascript函数,javascript,jquery,Javascript,Jquery,我有以下资料: $(function () { $.ajaxSetup({ cache: false }); var dialogs = {}; var formSubmitHandler = function (e) { ... } } 然后在另一个脚本中,我尝试调用 function dialogClick(link) { $.get(viewUrl + parameters) .success(fun

我有以下资料:

$(function () {

    $.ajaxSetup({ cache: false });
    var dialogs = {};

    var formSubmitHandler = function (e) {
        ...
    }

}
然后在另一个脚本中,我尝试调用

function dialogClick(link) {

    $.get(viewUrl + parameters)
            .success(function (content) {
                if (content.match(/^[eE]rror/)) {
                    mvcOnFailure(data)
                } else {
                    $.modal({
                        title: title,
                        closeButton: true,
                        content: content,
                        width: false,
                        resizeOnLoad: true
                    }).find('form').submit(formSubmitHandler).end();
                }
            })
请注意,为了便于阅读,我删掉了脚本的一部分。没有显示以下错误的脚本错误:

在第二个脚本中,我收到一条错误消息,在Internet Explorer中显示“SCRIPT5009:'formSubmitHandler'未定义”

我是不是叫错了?我以为函数是全局的,当我检查时 它所在的脚本附加到页面。

不,它不是全局的;您的“formSubmitHandler”函数在您发布的第一个示例代码块中的“ready”回调中声明。因此,它是该函数的私有函数

如果你真的想要一个全局函数,你可以做的是:

window['formSubmitHandler'] = formSubmitHandler;
在第一个函数中。或者,您可以将其设置为jQuery“全局”函数:

$['formSubmitHandler'] = formSubmitHandler;

在这种情况下,您将以
$的形式访问它

$(function () {

    $.ajaxSetup({ cache: false });
    var dialogs = {};
}

var formSubmitHandler = function (e) {
    ...
}

formSubmitHandler
仅存在于您声明的函数范围内,因为您使用了
var
变量

您需要:

  • 声明
    对话框在同一范围内单击
  • 使用
    window.formSubmitHandler
    或只使用
    函数formSubmitHandler(){}

  • formSubmitHandler
    是在
    对话框click()
    函数不可见的范围内声明的函数

    所以

    • 要么将
      formSubmitHandler
      声明为
      global
    • 或者定义函数
      对话框单击
      文档内的
      。就绪
      函数(并且
      formSubmitHandler
      是可访问的,因为它在父范围内)