AJAX调用没有拿起id并将其发送到php文件

时间:2015-07-16 15:11:49

标签: javascript php jquery ajax

我有一个页面,我接受或拒绝新用户。当有人被接受时,他们会进入一个名为Accepted Users的部分,在该部分中,管理员必须更改他们的权限级别或组#。所以在下面我从user_request表中获取该特定用户的user_id,并希望通过id更新我的users表。我只想通过对我的php文件的AJAX调用来通过选项框更新'group'。

由于某种原因,我的AJAX调用找不到id和group#,而不是发送到我的php文件。

在控制台的标题部分,我尝试发送此内容后得到以下内容。

ID:0 update_group:

有人看到我做错了吗?

$con2 = mysqli_connect("localhost", "root", "", "db");
$run2 = mysqli_query($con2,"SELECT * FROM user_requests ORDER BY id DESC");
$runUsers2 = mysqli_query($con2,"SELECT * FROM users ORDER BY id DESC");
$numrows2 = mysqli_num_rows($run2);

    if( $numrows2 ) {
        while($row2 = mysqli_fetch_assoc($run2)){
            if($row2['status'] == "Approved"){

                $approved_id        = $row2['user_id'];
                $approved_firstname = $row2['firstname'];
                $approved_lastname  = $row2['lastname'];
                $approved_username  = $row2['username'];

    if ($approved_firstname == true) {
        echo "Name - ". $approved_firstname . " " . $approved_lastname . "</br>" . 
            "Username - ". $approved_username . "</br></br>"
?>
<div class="change_group_button"> 
     <a class="change_group" href="javascript:void(0)">Change User Permission</a>
</div><br>
<div id="light" class="change_group_popup">
    <a class="close" href="javascript:void(0)">Close</a>

    <form id="update_group" action="" method="POST" accept-charset="utf-8">
       <div class="field">
        <label for="group">Group</label>
        <input type="hidden" value="<?php echo $approved_id; ?>" id="approved_id" name="id" />
        <select id='group_id' name='group' required>
            <option value=''><?php echo htmlentities($group); ?></option>
            <option value="1">Bench</option>
            <option value="2">Spectator</option>
            <option value="3">Team Member</option>
            <option value="4">Commissioner</option>
        </select>
    </div>
    <input type="submit" value="submit">
    </form>

Ajax调用

$(document).ready(function () {

    $('#update_group').on('submit', function (event) {
    event.preventDefault();
        $.ajax({
            url: 'user_group_update.php',
            type: 'POST',
            data: {
            id: $("#approved_id").val(), //id
            update_group: $("#group_id").val() //group level
        },
            success: function (data) {
                //do something with the data that got returned
                $("#success").fadeIn();
                $("#success").show();
                $('#success').html('User Permission Level Changed!');
                $('#success').delay(5000).fadeOut(400);
                alert(data);
            },
             error: function(jqXHR, textStatus,errorThrown )
            {
              // alert on an http error 
              alert( textStatus +  errorThrown );
            }
        });
        return false;
    });
});

user_group_update file ...

$approved_id = $_POST['id'];
$change_group = $_POST['update_group'];

$con = mysqli_connect("localhost","root","","db");
    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    $stmt = $con->prepare("UPDATE users SET `group`=? WHERE id=?");
    if ( !$stmt || $con->error ) {
     // Check Errors for prepare
        die('User Group update prepare() failed: ' . htmlspecialchars($con->error));
    }
    if(!$stmt->bind_param('ii', $change_group, $approved_id)) {
    // Check errors for binding parameters
        die('User Group update bind_param() failed: ' . htmlspecialchars($stmt->error));
    }
    if(!$stmt->execute()) {
        die('User Group update execute() failed: ' . htmlspecialchars($stmt->error));
    }

更新: 显示HTML PART的完整代码

if( $numrows2 ) {
        while($row2 = mysqli_fetch_assoc($run2)){
            if($row2['status'] == "Approved"){

                $approved_id        = $row2['user_id'];
                $approved_firstname = $row2['firstname'];
                $approved_lastname  = $row2['lastname'];
                $approved_username  = $row2['username'];

    if ($approved_firstname == true) {
        echo "Name - ". $approved_firstname . " " . $approved_lastname . "</br>" . 
            "Username - ". $approved_username . "</br></br>"
?>
<div class="change_group_button"> 
     <a class="change_group" href="javascript:void(0)">Change User Permission</a>
</div><br>
<div id="light" class="change_group_popup">
    <a class="close" href="javascript:void(0)">Close</a>

    <form id="update_group" action="" method="POST" accept-charset="utf-8">
       <div class="field">
        <label for="group">Group</label>
        <input type="hidden" value="<?php echo $approved_id; ?>" id="approved_id" name="id" />
        <select id='group_id' name='group' required>
            <option value=''><?php echo htmlentities($group); ?></option>
            <option value="1">Bench</option>
            <option value="2">Spectator</option>
            <option value="3">Team Member</option>
            <option value="4">Commissioner</option>
        </select>
    </div>
    <input type="submit" value="submit">
    </form>
    <p>Bench = 1</p>
    <p>Spectator = 2</p>
    <p>Team Member = 3</p>
    <p>Commissioner = 4</p>
</div>
<div id="fade" class="lighter_black_overlay"></div>
<?php               
                            ;} else {
                        echo "There are no Approved Users at this time.";
                    }
                }
            }
        }

2 个答案:

答案 0 :(得分:2)

你这里有很多问题..首先......你不能运行这部分:

$runUsers2 = mysqli_query($con2,"SELECT * FROM users ORDER BY id DESC");

因此您没有group

现在,您可以像这样合并SQL:

$run2 = mysqli_query($con2,"SELECT user_requests.*,users.group FROM user_requests INNER JOIN users ON user_requests.user_id=users.id ORDER USERS BY id DESC"); 

只是要知道我不知道你桌子的配置是什么,所以我猜这没关系。

现在,您需要像这样获得元素的集合:

$group= $row2['group'];

现在,如果您想选择,可以使用以下内容:

    <?php $selectedstring = "selected"; ?>
    <select id='group_id' name='group' required>
        <option value=''><?php echo htmlentities($group); ?></option>
        <option <?php echo $goup=='1'?$selectedstring:''; ?> value="1">Bench</option>
        <option <?php echo $goup=='2'?$selectedstring:''; ?> value="2">Spectator</option>
        <option <?php echo $goup=='3'?$selectedstring:''; ?> value="3">Team Member</option>
        <option <?php echo $goup=='4'?$selectedstring:''; ?> value="4">Commissioner</option>
    </select>

另外,在提交ajax中,请使用以下内容:

     $.ajax({
        url: 'user_group_update.php',
        type: 'POST',
        data: { 
        'id': $("#approved_id").val(), 
        'update_group': $("#group_id").val(),
        },
        success: function (data) {
            //do something with the data that got returned
            $("#success").fadeIn();
            $("#success").show();
            $('#success').html('User Permission Level Changed!');
            $('#success').delay(5000).fadeOut(400);
            alert(data);
        },
         error: function(jqXHR, textStatus,errorThrown )
        {
          // alert on an http error 
          alert( textStatus +  errorThrown );
        }
    });

答案 1 :(得分:1)

我在评论中写清楚我之前写的内容: 您必须指定要读取您提交的表单的输入值,因为在您的html中有许多表单,输入和选择具有相同的ID并且不是很好。所以改变:

  id: $("#approved_id").val(), //id
        update_group: $("#group_id").val() //group level

蒙山

    id:  $(this).find("#approved_id").val(), //id
    update_group: $(this).find( "#group_id option:selected" ).val()  //group level