gpt4 book ai didi

php - 在表循环内使用 AJAX 提交表单

转载 作者:行者123 更新时间:2023-12-01 07:38:35 29 4
gpt4 key购买 nike

我有一个表,在这个表内我用一个表单运行一个 while 循环。我使用 Ajax 提交此表单。

例如:

while 循环给出了 5 个结果,所以我有 5 个带有不同隐藏数据的按钮。当我按下第一个按钮时,我从 Ajax 获得了正确的数据,但是当我按下其他按钮时,我没有从 Ajax 获得任何结果。

由于搜索功能,我使用了表格,所以我想将其保留为表格。

(function($) {
function jobDetails(e) {
var formData = $('#jobForm').serialize() //serialize data from form
$.ajax({
url: 'jobdetails.php',
dataType: 'json',
type: 'post',
data: formData,
success: function(data, textStatus) {
// success
}
});
e.preventDefault();
}
$('#jobForm').click(jobDetails);
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
<div class="pull-right">
<input type="text" class="search" placeholder="Wat zoekt u?" onkeydown="onkeypressed(event, this);">
</div>

<span class="counter pull-right"></span>

<table width="100%" class="table table-striped table-bordered table-hover table-bordered results" id="searchTable">
<thead>
<tr class="warning no-result">
<td colspan="4"><i class="fa fa-warning"></i> No result</td>
</tr>
</thead>
<tbody>
<?php
if(isset($_GET['search'])){
$resource_id = ($_GET['machine']);
$jobs = "SELECT * FROM ";
$stmt = $pdo->prepare($jobs);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
?>
<tr>
<td>
<form id="jobForm" method="post">
<input type="hidden" name="machine" value="<?php echo $resource_id; ?>">
<input type="hidden" name="base" value="<?php echo $row[" WORKORDER_BASE_ID "]; ?>">
<input type="hidden" name="lot" value="<?php echo $row[" WORKORDER_LOT_ID "]; ?>">
<input type="hidden" name="split" value="<?php echo $row[" WORKORDER_SPLIT_ID "]; ?>">
<input type="hidden" name="sub" value="<?php echo $row[" WORKORDER_SUB_ID "]; ?>">
<input type="hidden" name="seq" value="<?php echo $row[" SEQUENCE_NO "]; ?>">
<input type="hidden" name="part" value="<?php echo $row[" PART_ID "]; ?>">
<button id="jobdetails" type="button" class="btn btn-default col-lg-12">
<?php echo $row["WORKORDER_BASE_ID"]."/".$row["WORKORDER_LOT_ID"].".".$row["WORKORDER_SPLIT_ID"]."-".$row["WORKORDER_SUB_ID"].":".$row["SEQUENCE_NO"];?>
</button>
</form>
</td>
</tr>
<?php
}
}
?>
</tbody>
</table>
</body>

最佳答案

您正在使用 while 循环来生成表单,但您对表单标记使用的 id 属性是错误的。正如您所说,如果有 5 个表单,则将有 5 个相同的 id="jobForm"id 在页面中应该是唯一的。使用类来代替。检查我在以下代码中所做的更改:

<?php
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
?>
<tr>
<td>
<form id="jobForm" class="jobForm" method="post"> // added class attribute with form tag.
<input type="hidden" name="machine" value="<?php echo $resource_id; ?>">
<input type="hidden" name="base" value="<?php echo $row["WORKORDER_BASE_ID"]; ?>">
<input type="hidden" name="lot" value="<?php echo $row["WORKORDER_LOT_ID"]; ?>">
<input type="hidden" name="split" value="<?php echo $row["WORKORDER_SPLIT_ID"]; ?>">
<input type="hidden" name="sub" value="<?php echo $row["WORKORDER_SUB_ID"]; ?>">
<input type="hidden" name="seq" value="<?php echo $row["SEQUENCE_NO"]; ?>">
<input type="hidden" name="part" value="<?php echo $row["PART_ID"]; ?>">
<button id="jobdetails" class="jobdetails" type="button" class="btn btn-default col-lg-12">
<?php echo $row["WORKORDER_BASE_ID"]."/".$row["WORKORDER_LOT_ID"].".".$row["WORKORDER_SPLIT_ID"]."-".$row["WORKORDER_SUB_ID"].":".$row["SEQUENCE_NO"];?>
</button>
</form>
</td>
</tr>
<?php
}



(function($){
function jobDetails( this,e ){
var formData = this.parents('form:first').serialize() //// Changed from direct #id to this object so it always refers to the clicked button.
$.ajax({
url: 'jobdetails.php',
dataType: 'json',
type: 'post',
data: formData,
success: function( data, textStatus ){
// success
}
});
e.preventDefault();
}
$('.jobForm').click( function(){ // Changed from id (#) to class (.)
$this = $(this);
jobDetails($this, event);
});
})(jQuery);

关于php - 在表循环内使用 AJAX 提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57567025/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com