我正在使用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。 在我的例子中有两个用户。当我通过点击发送数据时,它总是发送第一行的数据。
答案 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>