我在使用php和ajax更新mysql表时遇到了问题。
问题是,当我按下delete按钮时,它只会重定向到主页,而不会对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);
}
});
});
每次按下“删除”按钮时,我需要将“菜单”表中的“是否已删除”列更改为1,以便隐藏它。我认为我的php操作或ajax代码有问题,但我很难指出这一点。任何解释或帮助都将不胜感激。
4条答案
按热度按时间fykwrbwg1#
您同时使用表单和ajax来更新值。删除表单标签,只需使用ajax。尝试删除表单标签,如下所示
在delmenu.php中,使用ajax传递的属性。
hjqgdpho2#
首先,您需要通过添加以下内容来防止表单提交:
下一个。。您的ajax请求结构是:
所以在php中
menu_id
而不是iduse
:您必须对其余的代码逻辑进行故障排除,因为似乎存在多个错误,您可能会发现更多错误。。
希望有帮助
8gsdolmq3#
首先,总是分配一个
id
根据你的状态。2ajax表单:
j7dteeu84#
用以下代码更新文件deletemenu.php
因为您正在post type变量中发送“menu\ id”,并且没有名为“iduse”的post
下面是使用post方法进行ajax调用的代码
因此,您可以在deletemenu.php中将此数据用作$\u post['menu'id']和$\u post['is'deleted']。
并使用preventdefault删除表单提交后的重定向