【问题标题】:Javascript: Passing parameters to a method called by callbackJavascript:将参数传递给回调调用的方法
【发布时间】:2011-04-19 09:51:57
【问题描述】:

所以我的表单上有一个保存按钮,它有一个回调函数,在尝试保存表单之前会关闭并检查用户是否仍然经过身份验证,然后此回调调用验证表单的实际保存方法如果我们通过了身份验证,则保存它,如果没有,则弹出登录框。我的问题是这个保存方法需要接受回调的结果(真或假)和一些额外的参数来验证。

function saveButton_Click(sender, eventArgs, var1, var2, var3)
{
    var authenticated = myCallbackFunction(performSave);
}

function performSave(authenticated, var1, var2, var3)
{
    if (authenticated)
    {
        //do some validation and save
    }
    else
    {
        showLoginWindow();
    }
}

这是我目前得到的代码,它成功启动并执行回调并将结果传递给 performSave,但显然它没有传递我的额外变量,所以我所有的验证工作都失败了。我尝试了以下方法:

var authenticated = myCallbackFunction(performSave(authenticated, var1, var2, var3));

但这似乎只是导致回调被跳过和验证,var1、var2 等总是以未定义的形式通过。那么,我怎样才能成功地将我的变量连同我的回调结果一起传递给 performSave 方法呢?

【问题讨论】:

  • 为什么不调用myCallbackFunction 然后从saveButton_Click 函数调用performSave
  • @n0rd 已通过身份验证只是不断返回未定义的行为
  • 然后修复你的myCallbackFunction,这样它就不会返回未定义的。无论如何,无论您做什么,您都肯定无法将函数返回值传递给该函数。或者详细描述什么做什么以及你想要实现什么。

标签: javascript asp.net ajax callback


【解决方案1】:

您可以使用本地函数范围来实现这一点。

function saveButton_Click(sender, eventArgs, var1, var2, var3)
{
    myCallbackFunction(function(authenticated){
        performSave(authenticated, var1, var2, var3);
    });
}

【讨论】:

  • 太好了,这似乎正是我需要的,非常感谢
【解决方案2】:

尝试将声明和赋值分开,如下所示:

var authenticated = null;
authenticated = myCallbackFunction(performSave(authenticated, var1, var2, var3));

【讨论】:

  • 嗯,试过了,我在 authenticated = null 上放了一个断点,然后逐步执行。当我尝试进入 myCallbackFunction 时,它直接跳到 performSave 并使用 authenticated = null
猜你喜欢
  • 1970-01-01
  • 2011-03-28
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多