问题描述
第一个插入将相应地工作。这是第二次运行,此后的每次运行都会导致查询重复2次。
我不知道为什么会这样。
用户进行选择,该选择将填充数据表(example1)。然后,他们可以选择一个记录(或泳道)来填充另一个数据表(example2)。
这是最初的onClick事件:
$('#example1').on('click','tr > .laneClick',function(e){
e.preventDefault();
const dataTable = $('#example1').DataTable();
const rowData = dataTable.row($(this).closest('tr')).data();
let partnerCode = rowData['partner_code'];
let partnerName = rowData['partner_name'];
let groupName = rowData['groupname'];
let lanecriteria = {
partnerCode: partnerCode,partnerName: partnerName,groupName: groupName
}
displayLaneRecords(lanecriteria);
});
这是函数displayLaneRecords,它显示.laneClick onClick事件之后的第二个数据表,称为“ example2”:
function displayLaneRecords(lanecriteria){
if(lanecriteria == ""){
let data = '';
}
else{
let data = {
lanecriteria: {
partnerCode: lanecriteria.partnerCode,vesselProfile: lanecriteria.vesselProfile,salesRep: lanecriteria.salesRep
}
}
}
$.ajax({
url: 'api/getLaneData.PHP',type: 'POST',data: data,dataType: 'html',success: function(data,textStatus,jqXHR){
var jsonObject = JSON.parse(data);
var table = $('#example2').DataTable({
"data": jsonObject,"columns": [
// data columns
],"dom": 'Bfrtip',"buttons": [
{
text: '<i class="fa fa-plus"></i> Add Lane',className: 'addLane btn btn-primary btn-sm',action: function (e,dt,node,config){
// opens the form for processing
$('#addLaneModal').modal('show');
}
}
]
});
},error: function(jqHHR,errorThrown){
console.log('fail: '+ errorThrown);
return false;
}
}); // end ajaxcall
// here is where the form process will occur
} // end displayLaneRecords();
您将看到,表单处理将在displayLaneRecords()函数内进行。我必须这样做,以便在过程完成后,无需刷新即可重新填充数据表。
这是表格处理:
$('#addLanesubmit').on('click',function(e){
e.preventDefault();
let partnerCode = $('#addlanepartnercode').val();
let partnerName = $('#addlanepartnername').val();
let groupName = $('#addlanegroupname').val();
let addlanecriteria = {
partnerCode: partnerCode,groupName: groupName
}
$.post('api/editLane.PHP',{addlanecriteria:addlanecriteria},function(data){
if(data.indexOf('Error') > 1){
$('.message').text(data);
$('#errorModal').modal('show');
return false();
}
else{
$('.message').text(data);
$('#messageModal').modal('show');
$('#messageModal').on('hidden.bs.modal',function(){
$("#addLaneModal").modal('hide');
displayLaneRecords(lanecriteria); // call displayLaneRecords to refresh the table
});
}
});
});
<?PHP
if(isset($_POST['addlanecriteria'])){
$value = $_POST['addlanecriteria'];
$partnerCode = isset($value['partnerCode']) ? $value['partnerCode'] : '';
$partnerName = isset($value['partnerName']) ? $value['partnerName'] : '';
$groupName = isset($value['groupName']) ? $value['groupName'] : '';
try{
$dbc->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$insert = $dbc->prepare("INSERT INTO table (`partner_code`,`partner_name`,`group_name`) VALUES (:newpartnercode,:newpartnername,:newgroupname)");
$insert->execute([
'newpartnercode' => $partnerCode,'newpartnername' => $partnerName,'newgroupname' => $groupName
]);
if($insert){
echo "Success: New Lane has been added.";
}
}
catch(PDOException $e){
echo "Error: " . $e->getMessage();
}
}
?>
我试图尽量减少代码。
以上所有方法均无任何可见错误。提交表单后,新记录将插入到表中,并且数据表将刷新而不刷新页面。
当用户添加另一条记录时,就会出现问题-查询重复,而不是插入1条记录,而是插入2条记录。如果他们添加另一条记录,查询将插入4条记录。
接下来我可以尝试什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)