我正在使用 $.ajax 将数据发布到服务器。不过,我想向“成功”回调传递一个附加参数,以告诉回调函数响应所针对的 HTML 元素的 id。
有可能吗?喜欢:
success_cb(data, elementid)
{
(update the elementid with the server returned data)
}
$.ajax({
...
success:success_cb(elementid)
});
这是可能的。尝试这样的事情:
function success_cb(data, elementid)
{
(update the elementid with the server returned data)
}
$.ajax({
...
success:function(data){ success_cb(data, elementid); }
});
function postForElement(elementId){
$.post('/foo',someValues,function(data){
$(elementId).html("The server returned: "+data);
},'json');
}
通过将函数字面量声明为与
elementId
局部变量相同的作用域,该函数就成为可以访问该局部变量的 闭包。 (或者有些人可能会说,只有当函数字面量还引用未在其作用域中定义的非全局变量时,它才会成为闭包。这只是用词来混淆。)
这可能是一篇迟到的文章,但还有另一个对我有用的选择。
在 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 函数中可用