PHP Ajax 仅加载第一行
PHP Ajax Only loads in first row
我正在尝试使用 Ajax 在 php 上编写 运行 脚本,但只有第一行得到更新。
我看到了一些关于 类 的堆栈溢出帖子,我已经完成了,但仍然对我不起作用。
我在 foreach 中有 php table 运行ning 从 sqlite
加载数据
我在 table
中遇到问题的表格
foreach ($result as $row) {
extract($row);
echo '<!-- Modal -->
<div class="modal fade" id="company_id-'.$row['company_id'] .'" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="company_id-'.$row['company_id'] .'" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Company ID: '.$row['company_id'] .'</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" data-bs-toggle="tab" href="#notes">Notes</a>
</li>
<li class="nav-item">
<a class="nav-link" data-bs-toggle="tab" href="#other">Other</a>
</li>
</ul>
<div id="myTabContent" class="tab-content">
<div class="tab-pane fade active show" id="notes">
<div class="d-grid gap-2">
<button type="button" class="btn btn-secondary" disabled>Notes</button>
</div>
<form method="POST">
<div class="form-group">
<label>company_id</label>
<input type="text" class="company_id" id="company_id[]"/>
</div>
<div class="form-group">
<label>notes</label>
<input type="text" class="notes" id="notes[]"/>
</div>
<center><button type="button" class="save" id="save[]" >Insert</button></center>
</form>
</div>
</div>
<div class="tab-pane fade" id="other">
<br>
<div class="d-grid gap-2">
...
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
</div>';
//creating new table row per record
echo "<tr>";
echo '<td><span class="badge ' . $exmpl_status_icon .'">' . $exmp_status . '</span></td>';
echo '<td><button type="button" data-bs-toggle="modal" data-bs-target="#company_id-'.$row['company_id'] .'" class="btn btn-warning"><i class="fa-solid fa-eye"></i> </button></td>';
echo "</tr></tbody>";
}
和我正在使用的 JavaScript
$(document).ready(function(){
displayData();
$('.save').on('click', function(){
var notes = $('.notes').val();
var company_id = $('.company_id').val();
if($('.notes').val() == "" || $('.company_id').val() == ""){
alert("Please complete the required field");
}else{
$.ajax({
type: 'POST',
url: 'addcomment.php',
data: {
notes: notes,
company_id: company_id,
},
success: function(data){
$('.notes').val('');
$('.company_id').val('');
alert(data);
displayData();
}
})
}
});
function displayData(){
$.ajax({
type: 'POST',
url: 'data.php',
data: {res: 1},
success: function(data){
$('.data').html(data)
}
});
}
});
我从 ID 更改为 Class,但在 table 循环期间我仍然遗漏了一些东西,只有第一行在工作,第二行似乎数据被忽略,因为报告了空字符串。
如果有人知道我做错了什么或对此有解决方案,那就太好了,因为经过数小时的研究和尝试不同的代码,但运气不佳。不喜欢 ajax 但在这种情况下需要。
我设法修复了它。
我围绕表单创建了 元素。
var $el = $(this).closest('ty'); //Find parent tr element
var notes = $el.find(".notes").val();
var company_id = $el.find(".company_id").val();
示例
<ty>
<form>
</form>
</ty>
并搜索到最近的 ty 元素。现在我明白了这个逻辑。
我正在尝试使用 Ajax 在 php 上编写 运行 脚本,但只有第一行得到更新。
我看到了一些关于 类 的堆栈溢出帖子,我已经完成了,但仍然对我不起作用。
我在 foreach 中有 php table 运行ning 从 sqlite
加载数据我在 table
中遇到问题的表格 foreach ($result as $row) {
extract($row);
echo '<!-- Modal -->
<div class="modal fade" id="company_id-'.$row['company_id'] .'" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="company_id-'.$row['company_id'] .'" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Company ID: '.$row['company_id'] .'</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" data-bs-toggle="tab" href="#notes">Notes</a>
</li>
<li class="nav-item">
<a class="nav-link" data-bs-toggle="tab" href="#other">Other</a>
</li>
</ul>
<div id="myTabContent" class="tab-content">
<div class="tab-pane fade active show" id="notes">
<div class="d-grid gap-2">
<button type="button" class="btn btn-secondary" disabled>Notes</button>
</div>
<form method="POST">
<div class="form-group">
<label>company_id</label>
<input type="text" class="company_id" id="company_id[]"/>
</div>
<div class="form-group">
<label>notes</label>
<input type="text" class="notes" id="notes[]"/>
</div>
<center><button type="button" class="save" id="save[]" >Insert</button></center>
</form>
</div>
</div>
<div class="tab-pane fade" id="other">
<br>
<div class="d-grid gap-2">
...
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
</div>';
//creating new table row per record
echo "<tr>";
echo '<td><span class="badge ' . $exmpl_status_icon .'">' . $exmp_status . '</span></td>';
echo '<td><button type="button" data-bs-toggle="modal" data-bs-target="#company_id-'.$row['company_id'] .'" class="btn btn-warning"><i class="fa-solid fa-eye"></i> </button></td>';
echo "</tr></tbody>";
}
和我正在使用的 JavaScript
$(document).ready(function(){
displayData();
$('.save').on('click', function(){
var notes = $('.notes').val();
var company_id = $('.company_id').val();
if($('.notes').val() == "" || $('.company_id').val() == ""){
alert("Please complete the required field");
}else{
$.ajax({
type: 'POST',
url: 'addcomment.php',
data: {
notes: notes,
company_id: company_id,
},
success: function(data){
$('.notes').val('');
$('.company_id').val('');
alert(data);
displayData();
}
})
}
});
function displayData(){
$.ajax({
type: 'POST',
url: 'data.php',
data: {res: 1},
success: function(data){
$('.data').html(data)
}
});
}
});
我从 ID 更改为 Class,但在 table 循环期间我仍然遗漏了一些东西,只有第一行在工作,第二行似乎数据被忽略,因为报告了空字符串。
如果有人知道我做错了什么或对此有解决方案,那就太好了,因为经过数小时的研究和尝试不同的代码,但运气不佳。不喜欢 ajax 但在这种情况下需要。
我设法修复了它。
我围绕表单创建了
var $el = $(this).closest('ty'); //Find parent tr element
var notes = $el.find(".notes").val();
var company_id = $el.find(".company_id").val();
示例
<ty>
<form>
</form>
</ty>
并搜索到最近的 ty 元素。现在我明白了这个逻辑。