将参数传递给javascript回调函数

时间:2011-12-02 16:00:48

标签: javascript

我一直在努力研究如何将其他参数传递给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);
}

3 个答案:

答案 0 :(得分:12)

通常采用的方式是使用匿名函数。

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

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

小心你的语法,那里有一些错误。 function关键字有一个小写f,你不能拥有一个名为delete的函数,这是一个保留关键字。

答案 1 :(得分:3)

创建一个匿名函数,该函数调用您的回调,并提供所需的参数。

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

匿名函数将在itemId上创建一个闭包,因此即使在最初的delete调用已经结束之后,它仍然可以访问此值。

为了完整性,还要注意delete是JavaScript中的保留字;你需要将此功能命名为其他功能。

答案 2 :(得分: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);
}

N.B。 as @Xeon06 points outdelete is a reserved word,因此这不是有效的函数名称。