将参数传递给JavaScript回调函数

6

我一直在尝试找到如何向JavaScript回调函数传递额外参数的方法。

在类似的帖子中,用户成功使用匿名函数(这对我来说是新东西,所以我可能用错了),但我就是无法让它们起作用。

以下是我现在拥有的内容,我需要能够将itemId和响应同时传递给“ajaxCheck_Callback”函数。

希望这样说得清楚。

感谢您的帮助。

function delete(itemId)
{
  selectpage.ajaxCheck(itemId, ajaxCheck_Callback);
}


Function ajaxCheck_Callback(response)

{
  alert(response);
  alert(itemId);
}

谢谢大家的帮助。现在我的警告框上显示未定义,而之前这个警告框是正确的。

function delete(itemId)
{
  selectpage.ajaxCheck(itemid, function () {ajaxCheck_Callback(itemid); });
}


function ajaxCheck_Callback(response)

{
  alert(response);
  alert(itemId);
}

selectpage.ajaxCheck是什么? - Richard JP Le Guen
3个回答

12

通常做法是使用匿名函数。

function deleteItem(itemId) {
    selectpage.ajaxCheck(itemId, function() { ajaxcheck_Callback(itemId); });
}

function ajaxCheck_Callback(response)
{
    alert(response);
}

请注意语法,其中存在一些错误。 function关键字是小写的f,并且您不能有一个名为delete的函数,那是一个保留关键字。


关于不使用 delete 作为函数名称的观点很好。 (+1) - Matt Ball
谢谢。我已经用现有的代码更新了原始问题。 - JIbber4568
@JIbber4568,请将您的函数“delete”重命名为其他名称。 - Alex Turpin
@Xeon06 抱歉,我已经将其重命名为“ItemDelete”,只是没有复制到新代码中。;-) - JIbber4568
@JIbber4568,一切似乎都很正常。也许与您的ajaxCheck函数有关。如果没有在jsFiddle上提供完整的示例,就无法确定问题出在哪里。 - Alex Turpin
显示剩余3条评论

3
创建一个匿名函数,调用您的回调函数,并提供所需的参数。
function deleteItemById(itemId)
{
  selectpage.ajaxCheck(itemId, function() { ajaxCheck_Callback(itemId); });
}

匿名函数将会创建一个闭包来封装itemId变量,所以即使原始调用delete已经结束,该函数仍然可以访问这个值。

为了完整性,还需要注意delete是JavaScript中的保留字,你需要给这个函数取个别的名字。


3

根据您的问题,您可以使用匿名函数来实现:

function deleteItem(itemId)
{
  selectpage.ajaxCheck(itemId, function ()
  {
      ajaxCheck_Callback(itemId);
  });
}

// Note, lowercase 'f' in 'function'
function ajaxCheck_Callback(response)
{
  alert(response);
}

您也可以使用命名函数来完成此操作,这样更易于阅读:

function deleteItem(itemId)
{
    function onAjaxCheck()
    {
        ajaxCheck_Callback(itemId);
    }

  selectpage.ajaxCheck(itemId, onAjaxCheck);
}

注意:正如@Xeon06所指出的那样delete是JavaScript中的保留关键字,因此不是有效的函数名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接