【问题标题】:JQuery ajax send one form from many by click on checkboxJQuery ajax 通过单击复选框从多个表单中发送一个表单
【发布时间】:2014-01-06 02:57:21
【问题描述】:

我正在使用 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') 但我无法将我单击的行的 user_id 发送到 PHP。它总是让我返回第一行的 id。 我有一个用户列表、用户名、电子邮件、管理员(复选框)。 当后端用户点击复选框时,AJAX 应该发送一个帖子,将数据库管理单元格从 1 更新为 0。 在我的示例中,有两个用户。当我通过点击发送数据时,它总是发送第一行的数据。

【问题讨论】:

  • 你说它总是发送第一个用户的ID。但在您的示例中,我只看到一个用户。页面上是否有多个表单,而您只向我们展示了一个?
  • form>123123 nemeth.gabor.ng@gmail.com 2014-01-01 23:13:58 2014-01-02 23:14:02
    Gabesz80 nemeth.gabor.ng@gmail.com 2013-12-30 12:46:26 2013-12-30 17:40: 03

标签: javascript php jquery ajax checkbox


【解决方案1】:

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

注意事项...

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

(2) user_id 不需要隐藏,只需要在 checkbox 的 value 属性中添加 user_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>

【讨论】:

  • tnx 男人! is(':checked') - 现在对我非常有用()。你给了我很大的动力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
相关资源
最近更新 更多