我有一个显示多条记录的页面,我正在尝试编写一个单击处理程序来处理通过 ajax 帖子提交对单个记录的更改。我正在使用 done()、fail() 和 always() 来管理结果。
当 ajax 调用返回时,我想对提交的记录进行一些更新——例如,放置一条保存的消息,重新启用该记录的提交按钮等——但除非我知道提交的特定记录的 ID。
我想做的是将目标记录的 ID 传递到 done() 中,以便 done() 中的代码可以对最初调用它的记录进行必要的更改。
这是我的代码,它显示了我在做什么,但它不起作用,因为变量target_id
在这些函数中没有值。如何将该变量传递给这些函数?
$("#container").on("click", ".save-button", function(e) {
if ($(this).hasClass('disabled')) {return;}
var button_html = $(this).html();
$(this).html('Please wait...');
$(this).addClass('disabled');
var target_id = $(this).parents(".record-form").find("#record-id").val();
var form_poster = $.post("user_form_submit.php", target_form.serialize());
form_poster.done(function(response_object) {
var result = response_object['result'];
if (result=='success') {
var alert_area = $("#" + target_id + " .alert-area").html("Record Updated");
} else {
var alert_area = $("#" + target_id + " .alert-area").html("Record Not Found");
}
});
form_poster.fail(function() {
var alert_area = $("#" + target_id + " .alert-area").html("An Error Occurred");
});
form_poster.always(function() {
$("#" + target_id + " .save-button").removeClass('disabled');
$("#" + target_id + " .save-button").html(button_html);
});
});