У меня есть страница с несколькими записями, и я пытаюсь написать обработчик кликов, чтобы позаботиться о внесении изменений в отдельные записи через пост ajax. Я использую done(), fail() и always() для управления результатами.Как передать данные в jquery done()?
Когда возвращается вызов ajax, я хочу внести некоторые обновления в запись, которая была отправлена - например. поместить сохраненное сообщение, снова включить кнопку отправки для этой записи и т. д. - но я не могу этого сделать, если не знаю идентификатор конкретной записи, которая была отправлена.
То, что я хотел бы сделать, это передать идентификатор целевой записи в 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);
});
});
'target_id' определен в более высокой области видимости, поэтому он должен иметь значение, вы уверены, что это проблема? – adeneo
звучит так, будто вы дублируете ID, который по определению должен быть уникальным, иначе можно было бы заменить '$ (this) .parents (". Record-form "). Find (" # record-id ")' с '$ (" # record -id ")' – charlietfl