Javascript JQuery ajax通过单击复选框从多个表单中发送一个表单

Javascript JQuery ajax通过单击复选框从多个表单中发送一个表单,javascript,php,jquery,ajax,checkbox,Javascript,Php,Jquery,Ajax,Checkbox,我正在使用phpClass生成一个表单: <`div id='admin_users' class=''><h1>Felhasználók</h1> <table id='admin_user'><thead><tr><th>user_name</th><th>user_email</th><th>reg_time</th><th>ac

我正在使用phpClass生成一个表单:

   <`div id='admin_users' class=''><h1>Felhasználók</h1>
<table id='admin_user'><thead><tr><th>user_name</th><th>user_email</th><th>reg_time</th><th>activate time</th><th>admin</th></tr></thead>
<tr>
<form>
<td>123123</td>
<td>n**********ng@gmail.com</td>
<td>2014-01-01 23:13:58</td>
<td>2014-01-02 23:14:02</td>
<td><input type='checkbox' checked='checked' id='admin' class='admin' name='admin'  value='47' /></td><input type='hidden' id='user_id' name='user_id' value='47' />
</form>
</tr>
<tr>
<form>
<td>Gabesz80</td>
<td>n***********ng@gmail.com</td>
<td>2013-12-30 12:46:26</td>
<td>2013-12-30 17:40:03</td>
<td><input type='checkbox' checked='checked' id='admin' class='admin' name='admin'  value='48' />
</td><input type='hidden' id='user_id' name='user_id' value='48' />
</form>
</tr>
</table>
</div>`



echo "<tr><form>";
    echo "<td>".$q->user_name."</td>";
    echo "<td>".$q->user_email."</td>";
    echo "<td>".$q->reg_time."</td>";
    echo "<td>".$q->activate_time."</td>";
    if($q->admin==1){
        echo "<td><input type='checkbox' checked='checked' id='admin' class='admin'
 name='admin'  /></td>";
    }
    else {
        echo "<td><input type='checkbox' id='admin' class='admin' name='admin' /></td>";
    }
        echo "<input type='hidden' id='user_id' name='user_id' value='".$q->user_id."' />";

    echo "</form></tr>";
而PHP:

 <?php

if(isset($_POST)){
    echo   $_POST['user_id'] ;
    echo   $_POST['admin'] ;
}

?>
我尝试选择下一个,find,$'user\u id',但我无法将我单击的行的user\u id发送给PHP。它总是给我第一行的id。 我有一个用户列表,用户名,电子邮件,管理员复选框。 当后端的用户单击复选框时,AJAX应该发送一篇文章,将数据库管理单元从1更新为0。
在我的示例中,有两个用户。当我用鼠标点击发送数据时,它总是发送第一行的数据。

这里有一个工作提琴,它将为您提供所需的信息。下面还有代码

有几件事需要注意

1我假设您在示例中只显示一个用户,但实际上您有很多用户。这就是为什么$'user_id'。val选择器总是给您第一个,因为id不是唯一的

2用户id不需要隐藏,只需将用户id添加到复选框的值属性中即可

<form id="myForm">
    <table border="1">
        <tr><td>Gordon</td></tr>
        <tr><td>nobody@nobody.com</td></tr>
        <tr><td>reg_time</td></tr>
        <tr><td>activate_time</td></tr>
        <tr><td><input type="checkbox" value="101" /></td></tr> <!-- 101 is your user_id -->
    </table>
    <br/>
    <table border="1">
        <tr><td>Gordon2</td></tr>
        <tr><td>nobody2@nobody.com</td></tr>
        <tr><td>reg_time2</td></tr>
        <tr><td>activate_time2</td></tr>
        <tr><td><input type="checkbox" value="202" /></td></tr> <!-- 202 is your user_id -->
    </table>
    ...more users, etc...
</form>

<script>
jQuery(':checkbox').click(function( event ) {

    if(jQuery(this).is(':checked'))
        admin = '1';
    else
        admin = '0';

    var user_id = jQuery(this).val();

    alert('Make admin: '+admin);
    alert('What user am I making/not making an admin? '+user_id);
    alert('Now test unchecking the box...');
    return; //exiting out for the sake of this example, you will do the ajax below which submits 1,0 for make or unmake admin and it send the user_id.

    jQuery.ajax({
        type: "POST",
        url: "admin_process.php",
        data: { admin : admin, user_id : user_id }
    }).done(function( msg ){ alert("Az adatok: " + msg); });

});
</script>

您说过它总是发送第一个用户的ID。但在您的示例中,我只看到一个用户。页面上是否有多个表单,而您只向我们显示一个表单?表单>123123nemeth.gabor。ng@gmail.com2014-01-01 23:13:582014-01-02 23:14:02Gabesz80nemeth.gabor。ng@gmail.com2013-12-3012:46:262013-12-3017:40:03tnx人!is':checked'-现在对我很有用。你给了我很大的鼓舞。
<form id="myForm">
    <table border="1">
        <tr><td>Gordon</td></tr>
        <tr><td>nobody@nobody.com</td></tr>
        <tr><td>reg_time</td></tr>
        <tr><td>activate_time</td></tr>
        <tr><td><input type="checkbox" value="101" /></td></tr> <!-- 101 is your user_id -->
    </table>
    <br/>
    <table border="1">
        <tr><td>Gordon2</td></tr>
        <tr><td>nobody2@nobody.com</td></tr>
        <tr><td>reg_time2</td></tr>
        <tr><td>activate_time2</td></tr>
        <tr><td><input type="checkbox" value="202" /></td></tr> <!-- 202 is your user_id -->
    </table>
    ...more users, etc...
</form>

<script>
jQuery(':checkbox').click(function( event ) {

    if(jQuery(this).is(':checked'))
        admin = '1';
    else
        admin = '0';

    var user_id = jQuery(this).val();

    alert('Make admin: '+admin);
    alert('What user am I making/not making an admin? '+user_id);
    alert('Now test unchecking the box...');
    return; //exiting out for the sake of this example, you will do the ajax below which submits 1,0 for make or unmake admin and it send the user_id.

    jQuery.ajax({
        type: "POST",
        url: "admin_process.php",
        data: { admin : admin, user_id : user_id }
    }).done(function( msg ){ alert("Az adatok: " + msg); });

});
</script>