【问题标题】:jquery $.ajax: pass additional argument to 'success' callbackjquery $.ajax:将附加参数传递给“成功”回调
【发布时间】:2010-11-17 06:08:36
【问题描述】:

我正在使用 $.ajax 将数据发布到服务器。但是,我想向“成功”回调传递一个附加参数,以告诉回调函数响应所针对的 HTML 元素的 ID。

有可能吗?喜欢:

success_cb(data, elementid)
{
    (update the elementid with the server returned data)
}

$.ajax({
    ...
    success:success_cb(elementid)
});

【问题讨论】:

  • 最好的解决方法是实际使用 OOP,而不是将 ID 传递给周围的元素。 :)

标签: jquery ajax


【解决方案1】:

这是可能的。尝试类似:

function success_cb(data, elementid)
{
    (update the elementid with the server returned data)
}

$.ajax({
    ...
    success:function(data){ success_cb(data, elementid); }
});

【讨论】:

  • 这(将回调包装在 anon 函数中)是如此简单的答案,我不敢相信我没有立即想到它。 :-)
  • 这也对我有用,但想知道......知道已经很久了,你能解释一下为什么需要这样吗?比如...你为什么不能做success: function(data, elementid) {}(我意识到有状态码之类的,所以现实的问题是你为什么不能做success: function(data, textStatus, jqXHR, elementid) {}
【解决方案2】:
function postForElement(elementId){
  $.post('/foo',someValues,function(data){
    $(elementId).html("The server returned: "+data);
  },'json');
}

通过在与elementId 局部变量相同的范围内声明函数字面量,该函数成为一个可以访问该局部变量的闭包。 (或者有些人可能会说,当函数字面量还引用了未在其范围内定义的非全局变量时,它才成为 闭包。这只是用词来形容。)

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 2011-06-29
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多