PHP 表不会使用 AJAX 更新 Mysql

标签 php mysql ajax

我在使用 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/

相关文章:

php - 未定义的属性 : stdClass codeigniter

php - 在 jQuery 中克隆或向表单添加输入不会提交到 Firefox 中的 PHP

php - 错误代码 200 phpmyadmin 4.6.0

mysql - 优化50W-100W表中的SQL查询

javascript - 如何在 AJAX 函数中从 HTML 获取值字段?

php - MySQL语句连接2个表并对相同的项目求和

php - PayPal Express 在沙盒模式下返回 4011 错误消息

mysql - 这些 MySQL 全局变量的真正含义是什么?

ajax - ViewModel 是否支持嵌套模型?虚拟属性可以应用于 viewModel 吗?

javascript - 根据返回数据改变Ajax查询dataType