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

时间:2014-01-03 21:12:37

标签: 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>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>";

Jquery:

   $(':checkbox').click(function( event ) {


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

PHP:

 <?php

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

?>

我尝试选择next(),find(),$('#user_id')但我无法向PHP发送我点击的行的user_id。它总是让我回到第一行的id。 我有一个用户列表,用户名,电子邮件,管理员(复选框)。 当后端的用户单击该复选框时,AJAX应发送一个帖子,将数据库管理单元的更新从1更新为0。 在我的例子中有两个用户。当我通过点击发送数据时,它总是发送第一行的数据。

1 个答案:

答案 0 :(得分:0)

这是一个工作小提琴,可以满足您的需求(代码也在下面)... http://jsfiddle.net/SYFeL/2/

要注意的事情......

(1)我假设你只是在你的例子中展示了一个用户,但你确实有很多用户。这就是为什么你的$('#user_id').val()选择器总是给你第一个,因为ID不是唯一的。

(2)你不需要为user_id隐藏,只需将user_id添加到复选框的value属性

<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>