我有多个表单,每个表单都已提交,但不是第一个表单。
我尝试了诸如 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');;
}
}
});
}
最佳答案
您在开始时通过 echo $i++
将 $i 递增两次,除了 for 循环之外,它还会递增 $i ,因此循环仅运行三次,表单 id 为 form0 但相应的函数为 save_changes (1),如果该表单 ID 根本不存在,请尝试以下代码。
<?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 } ;?>
尝试此代码并让我知道它是否有效。
关于php - jquery 序列化方法的多种形式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55313754/