jquery $.ajax:将附加参数传递给“成功”回调

问题描述 投票:0回答:3

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

有可能吗?喜欢:

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

$.ajax({
    ...
    success:success_cb(elementid)
});
jquery ajax
3个回答
25
投票

这是可能的。尝试这样的事情:

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

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

13
投票
function postForElement(elementId){
  $.post('/foo',someValues,function(data){
    $(elementId).html("The server returned: "+data);
  },'json');
}

通过将函数字面量声明为与

elementId
局部变量相同的作用域,该函数就成为可以访问该局部变量的 闭包。 (或者有些人可能会说,只有当函数字面量还引用未在其作用域中定义的非全局变量时,它才会成为闭包。这只是用词来混淆。)


0
投票

这可能是一篇迟到的文章,但还有另一个对我有用的选择。

在 Ajax 对象上我添加了更多变量,例如 variableNeeded:

 $.ajax({
     url:"url.php",
     method:"post",
     variableNeeded:"ABC123",
     dataType:"json",
     error:function(){
          // manage error           
     },
     success:function(json,status,xlr){
          console.log(this.variableNeeded);
          // use variable as needed.
     }
});

因为它是对象的一部分,所以可以通过使用 this ex: this.variableNeeded

在 success 函数中可用
© www.soinside.com 2019 - 2024. All rights reserved.