php jquery ajax 中缺少参数

parameter is missing in php jquery ajax

很抱歉再次打扰我的基本问题。首先,对不起,如果我的英语有点难以理解。我目前的情况是我想在我的拖放框中做一个弹出模式。在我的弹出模式中,我可以根据我们在框中按钮中单击的内容来查看和编辑用户的详细信息。问题是,我不能通过 id SELECT 数据。但是,当我SELECT所有数据时,数据出现在模态框中。但是,它显示所有数据。我只想要选定的 ID。回到我过去几天的问题,我再次重做以加深对这个弹出模式部分的理解。我已经完成了 ajax 和一点点 JavaScript,另外,我尝试按照别人告诉我的那样调试我的代码,但我收到一条错误消息“Parameter is missing”。是什么原因造成的?我已经阅读了一些关于参数的资料,但我仍然没有真正理解它。有人能知道实际上缺少什么参数吗?我想用它做什么?

这里是我到目前为止的尝试。

这是按钮

<button data-id="<?php echo $row['userid'];?>" data-target="doubleClick-1" class='jobinfo' type='button' id='btnInfo' ondblclick="document.getElementById('doubleClick-1').style.display='block'">Info</button>

这是模态弹出窗口

 <div id="doubleClick-1" class="modal">
      <label class="tabHeading">User Info</label>
        <div class="contentTechJobInfo">
        <div class="tech-details">
        <div class="techClose" onclick="document.getElementById('doubleClick-1').style.display='none'" >&times</div>

        </div>    
        </div> 

        </div>
        </div>
        
 
   <script type='text/javascript'>
    
    $(document).ready(function() {
    $('.jobinfo').click(function() {

    var userid = $(this).data('userid');

    // AJAX request
    $.ajax({
    
        url: 'ajaxhome.php',
        type: 'post',
        data: {userid: userid},
        success: function(response) {
     // Add response in Modal body
        $('.tech-details').html(response);
    // Display Modal
        $('#doubleClick-1').modal('show');
        }
        });
         });
         });

</script>

这是我的ajaxhome.php

<?php
    $connection = mysqli_connect("", "", "");
    $db = mysqli_select_db($connection, '');

  

        if (!isset($_GET['userid'])) {
  die("Parameter is missing!");  
}

$userid = intval($_GET['userid']);

        $query = "SELECT * FROM user WHERE userid ='$userid'";
      
        $query_run = mysqli_query($connection, $query);
        if ($query_run) {
            while ($row = mysqli_fetch_array($query_run)) {
                ?>

                 
     <div class="input-box">
            <label for="">Name</label>
            <input type="text" id="username" name="username" value="<?php echo $row['username']?>">
        </div>
        <div class="input-box">
            <label for="">Number</label>
            <input type="text" id="usernumber" name="usernumber" value="<?php echo $row['usernumber']?>">
        </div>
        <div class="input-box">
            <label for="">Class</label>
            <input type="text" id="userclass" name="userclass" value="<?php echo $row['userclass']?>">
        </div>
       
 
 <button type="submit" id="submit" name="update" class="btn btn-primary"> Update Data </button>               
      
                    <?php

                    if (isset($_POST['update'])) {
                        $username = $_POST['username'];
                        $usernumber = $_POST['usernumber'];
                        $userclass = $_POST['userclass'];
                       

                        $query = "UPDATE user SET username='$username', usernumber='$usernumber', userclass='$userclass' WHERE userid='$userid'";

                        $query_run = mysqli_query($connection, $query);

                        if ($query_run) {
                            echo '<script> alert("Data Updated"); </script>';
                            header("location:homepage.php");
                        } else {
                            echo '<script> alert("Data Not Updated"); </script>';
                        }
                    }
            } ?>

    <?php
        }

    ?>

我认为没有获取用户的价值 var userid = $(this).data('userid'); 你可以试试 var userid = $(this).data('id');

简而言之,我认为问题出在您的模态中的这些代码行:

var userid = $(this).data('userid');

你应该将其替换为

var userid = $(this).data('id'); // you should pass 'id' to .data() function instead of 'userid'

使用您当前的代码 userid,您 modal 中的变量将始终为 undefined。这意味着当您向 PHP 发送 ajax 请求时,它不会存在于 $_GET 中。它会导致您的 ajaxhome.php 移动到 die("Parameter is missing!");

要使用 jQuery 获取 data-xxx 属性,您应该使用 pass 'xxx' to .data() 函数。

var xxx = $(this).data('xxx');

在您的按钮中,您将 userid 存储在 data-id 属性中

<button data-id="<?php echo $row['userid'];?>"

所以如果你需要得到那个 userid 你应该将 'id' 传递给 .data() 函数

更新: 在您的 ajax 中,您使用的是 type: 'post',因此在您的 php 代码中,您应该检查 $_POST 而不是 $_GET