我在使用 PHP 和 Ajax 更新 mysql 表时遇到问题。
问题是,当我按下删除按钮时,它仅重定向到主页,并且不会对 MYSQL 数据执行任何操作。
HTML
<tbody>
<?php
if($qry->prepare("SELECT * FROM `menus` WHERE `is_deleted` = 0")){
$qry->execute();
$result = $qry->get_result();
if($result->num_rows > 0){
while($row = $result->fetch_array()){
?>
<tr>
<td><?= $row['menu_code'] ?></td>
<td><?= $row['menu_name'] ?></td>
<td><?= $row['menu_desc'] ?></td>
<td><?= $row['menu_type'] ?></td>
<!--<td><?= $row['menu_code'] ?></td>-->
<td><?= $row['menu_price'] ?></td>
<!--<td><?= $row['sizes'] ?></td>-->
<td>
<input type="submit" class="btn btn-sm btn-info" value="View" >
<form method="POST">
<input type="submit" id="delMenu" class="btn btn-sm btn-danger" value="Delete" >
<input type='hidden' id="delID" value=" <?php echo $row['menu_id'];?>" name="iduse">
</form>
</td>
</tr>
<?php
}
}
}
?>
</tbody>
删除菜单.php
<?php
include '../../configurations/config.php';
$qry = $con->stmt_init();
$iduse=$_POST['iduse'];
$sqlCode="UPDATE menus SET is_deleted = 1 WHERE menu_id = $iduse";
if($qry->prepare($sqlCode)){
$qry->execute();
echo json_encode(array(
"status" => 200,
));
} else {
echo json_encode(array(
"status" => 400
));
}
Ajax
$(document).on('click', '#delMenu', function(){
var id = $('#delID').value();
var ask = confirm('Are you sure you want to delete this item?');
$.ajax({
url: base_url() + "../functions/DeleteMenu.php",
method:"POST",
data: {'menu_id' : id,
'is_deleted' : '1'},
dataType: 'json',
cache: false,
success:function(result){
if(result.status == 200){
alert('Successfully removed!');
$('#content_load').load('views/menus');
} else {
alert('Has not removed!');
}
},
error:function(result){
//alert('Fail');
console.log(result);
}
});
});
每次按下“删除”按钮时,我都需要将菜单表上的“is_deleted”列更改为 1,以便隐藏它。我认为我的 php 操作或 ajax 代码有问题,但我很难指出它。任何解释或帮助将不胜感激。
最佳答案
首先,您需要通过添加以下内容来阻止表单提交:
$(document).on('click', '#delMenu', function(e) {
e.preventDefault();
// ...
}
下一步..你的ajax请求结构是:
{
'menu_id' : id,
'is_deleted' : '1'
}
因此在 php 中使用 menu_id
而不是 iduse
:
$iduse = $_POST['menu_id'];
您必须对其余代码逻辑进行故障排除,因为似乎存在多个错误,并且您可能会发现更多错误......
希望对你有帮助
关于PHP 表不会使用 AJAX 更新 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51900141/