複数のレコードを表示するページがあり、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);
});
});