#php #jquery #html
#php #jquery #HTML
Вопрос:
У меня есть несколько форм, и каждая форма отправляется, но не первая.
Я перепробовал все, что похоже event.preventDefault();
МОЙ КОД :
<?php for($i=0;$i<=5;$i ){ ?>
<form id="form<?php echo $i; ?>>
<td><?php echo $i ?><td>
<td><input type="text" name="detention_unloading_charges" value="<?php echo $history[$i]->name; ?>"></td>
<td><input type="text" name="dtn_chrg_per_day" value="<?php echo $history[$i]->dtn_chrg_per_day; ?>"></td>
<td><input type="text" name="dtn_chrg" value="<?php echo $history[$i]->dtn_chrg; ?>"></td>
<td>
<button class="btn btn-secondary" type="button" onclick="save_changes(<?php echo $i ?>);">Save Changes</button></td>
</form>
}
и функция jquery:
function save_changes(id)
{
$.ajax({
url: "History/update",
type: "POST",
data: $('#form' id).serialize(),
success: function(data) {
// Success message
console.log(data);
if(data==1){
$('.success_pop_up').addClass('show').removeClass('d-none');
} else{
$('.failure_pop_up').addClass('show').removeClass('d-none');;
}
}
});
}
Комментарии:
1. оставьте $ i ниже <кнопка>
2. @gracie williams это вообще не имеет смысла
3. Он использует echo без необходимости , что также увеличивает значение $ i отдельно от цикла for , поэтому цикл выполняется только трижды, а идентификатор формы равен form0 , но соответствующая функция save_changes(1) , где эта форма вообще не существует
4. @грейси Уильямс, тогда решение состоит в том, чтобы удалить лишний $ i , а не перемещать его куда-то еще (что вы предложили в своем первом комментарии)
5. да, извините, что удалил это
Ответ №1:
Вы увеличиваете $ i дважды в самом начале на echo $i
, что также увеличивает $ i отдельно от цикла for , поэтому цикл выполняется только трижды, а идентификатор формы равен form0 , но соответствующая функция save_changes(1) , где этот идентификатор формы вообще не существует , попробуйте приведенный ниже код.
<?php for($i=0;$i<=5;$i ){ ?>
<form id="form<?php echo $i; ?>>
<td><?php echo $i?><td>
<td><input type="text" name="detention_unloading_charges" value="<?php echo $history[$i]->name; ?>"></td>
<td><input type="text" name="dtn_chrg_per_day" value="<?php echo $history[$i]->dtn_chrg_per_day; ?>"></td>
<td><input type="text" name="dtn_chrg" value="<?php echo $history[$i]->dtn_chrg; ?>"></td>
<td>
<button class="btn btn-secondary" type="button" onclick="save_changes(<?php echo $i ?>);">Save Changes</button></td>
</form>
<?php } ;?>
Попробуйте этот код и дайте мне знать, работает ли он.
Ответ №2:
Вероятно, вы захотите решить эту проблему следующим образом:
Пусть кнопка выполняет отправку по умолчанию следующим образом:
<button type="submit">Send</button>
Перехватите событие отправки для вашей формы в jQuery:
$('form').on('submit', function(e) {
// Prevent default so the browser doesnt automatically submit it.
e.preventDefault();
var data = $(this).serialize();
// ... send it
});
Таким образом, намного проще выполнять запросы AJAX-форм.