【发布时间】:2018-06-11 09:56:47
【问题描述】:
一个表单是用 PHP 循环动态创建的,并从 DB 中显示一行。我要求用户在更改数量时通过提示输入,但是当我使用 AJAX 将其发送到 PHP 时,它是空的。我猜这是因为隐藏输入“new_message”在 AJAX 向 PHP 脚本发送值的同时被填充,所以此时是空白的。对于生成的第一行,我会收到一条消息,但对于任何其他行都没有。
你能帮我如何将提示输入传递给 PHP 脚本吗?
//Update qty on article
$('.update_qty').on('change', function() {
var message = prompt("Upišite razlog za izmjenu količine:");
//e.preventDefault();
//Get message value
$('#new_message').val(message);
var data = $('#form1').serializeArray();
if (message != "" || message != NULL) {
$.ajax({
type: 'POST',
url: 'update_qty.php',
data: data,
success: function(data) {
alert(data);
}
});
} else {
alert("Empty");
e.PreventDefault();
return false;
}
});
<tbody>
<?php if (!empty($sales_plan_list)) {
foreach($sales_plan_list as $sales_key => $sales_value) {
?>
<tr class="new">
<td>
<a href="view_product_sales.php?id=<?php echo $sales_value['article_id']; ?>">
<?php echo $sales_value['article_no']; ?>
</a>
</td>
<td><?php echo $sales_value['description']; ?></td>
<td><?php echo myNumberFormat($sales_value['rrp']); ?></td>
<td>
<form name="form1" id="form1" method="POST" action="update_qty.php">
<input type="text" name="update_qty" class="update_qty" id="qty" value="<?php echo $sales_value['qty'] ?>"><?php echo ' Kom'; ?>
<input type="hidden" name="article_id" id="article_id" value="<?php echo $sales_value['article_id']; ?>">
<input type="hidden" name="sales_plan_id" id="sales_plan_id" value="<?php echo $sales_plan_id; ?>">
<input type="hidden" name="product_mix_id" id="product_mix_id" value="<?php echo $product_mix_id; ?>">
<input type="hidden" name="new_message" id="new_message" value="">
</form>
</td>
<td>
<a href="view_product_sales.php?id=<?php echo $sales_value['article_id']; ?>" class="ti-eye" title="Pogledaj"></a>
<a href="edit_product_sales.php?id=<?php echo $sales_value['article_id']; ?>" class="ti-settings" title="Izmjeni"></a>
<a href="delete_product_sales.php?id=<?php echo $sales_value['article_id']; ?>$sales_plan_id=<?php echo $sales_plan_id; ?>" class="ti-trash" title="Obriši"></a>
</td>
</tr>
<?php
}
}
?>
</tbody>
【问题讨论】:
-
好吧,序列化表单数据之后你填写了字段然后......?
-
就像上面的代码(我编辑的)?那也行不通。只能获取第一行的消息。
-
你首先说的是什么“行”?您谈论了一个循环,但忽略了向我们展示所说的循环 - 所以我们无法知道您生成的内容会是什么样子。但是 ID 在 HTML 文档中必须是唯一的,因此,如果您的循环多次输出上面显示的内容,那一开始就是错误的,这是您需要修复的第一件事。
-
在php中打印数据并检查是否有值。如果不是在发送 ajax 打印
$('#new_message').val之前。$('#new_message')的名称是什么,如果没有,则添加一个,然后在 php 中检查是否有值。请记住,ajax 按名称发送表单数据。 -
我已经用 php 循环更新了我的代码,所以你可以看到行是如何生成的。