这是我的代码
<table class='block'>
<tr>
<td>
<input class='c1' type='checkbox' lid='checkbox1'>
<label>checkbox1</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox2'>
<label>checkbox2</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox3'>
<label>checkbox3</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox4'>
<label>checkbox4</label>
</td>
<td>
<input class='c3' type='checkbox' lid='checkbox5'>
<label>checkbox5</label>
</td>
<td>
<input class='c3' type='checkbox' lid='checkbox6'>
<label>checkbox6</label>
</td>
</tr>
</table>
<script type='text/javascript'>
$('input[type=checkbox]').each(function (){
if (this.checked) {
var x = $(this).attr('lid');
}
});
</script>
<?php
if(!isset($_SESSION))
{
session_start();
}
if(!isset($_GET['x'])) $_GET['x'] = '';
$_SESSION['x'] = $_GET['x'];
?>
我想在会话中保存选中的复选框。因此,当我回到页面时,相同的复选框应保持选中状态。
答案 0 :(得分:0)
在我看来,不是将它们保存到会话中,而是将它们保存在数据库中。当您回到同一页面时,从数据库中检索值。我相信,这将是更容易和最好的方法。
解决您的问题
首先,您需要确定您的数据/复选框值是否已保存到会话变量中。因为,在完成代码片段之后,我真的怀疑,你的复选框值会保存在会话变量中。
问题1:您没有使用GET方法将值存储到会话变量中
<?php
if(!isset($_SESSION))
{
session_start();
}
if(!isset($_GET['x'])) $_GET['x'] = '';
$_SESSION['x'] = $_GET['x']; // storing data using GET method
?>
这是您的代码,您尝试使用 GET 方法将数据存储在会话变量中。但是,我没有找到通过所选值的任何form
。
问题2:您没有检索会话变量
<script type='text/javascript'>
$('input[type=checkbox]').each(function (){
if (this.checked) {
var x = $(this).attr('lid');
}
});
</script>
在javascript
代码中,您没有提及任何会话变量,您可以通过该变量匹配先前检查的变量。
答案 1 :(得分:0)
好的,这是您尝试使用会话完成的工作示例。
<?php
session_start();
if(isset($_GET['checkbox']))
{
$_SESSION[$_GET['checkbox'][0]] = isset($_SESSION[$_GET['checkbox'][0]]) ? +!($_SESSION[$_GET['checkbox'][0]]) : TRUE;
print_r($_SESSION[$_GET['checkbox'][0]]);
die;
}
?>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<table class='block'>
<tr>
<td>
<input class='c1' type='checkbox' lid='checkbox1' <?php echo (isset($_SESSION['checkbox1'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox1</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox2' <?php echo (isset($_SESSION['checkbox2'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox2</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox3' <?php echo (isset($_SESSION['checkbox3'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox3</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox4' <?php echo (isset($_SESSION['checkbox4'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox4</label>
</td>
<td>
<input class='c3' type='checkbox' lid='checkbox5' <?php echo (isset($_SESSION['checkbox5'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox5</label>
</td>
<td>
<input class='c3' type='checkbox' lid='checkbox6' <?php echo (isset($_SESSION['checkbox6'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox6</label>
</td>
</tr>
</table>
</body>
</html>
<script>
$(document).ready(function() {
$('input[type=checkbox]').on('change', function() {
$.get("sefesf.php", { 'checkbox[]':$(this).attr('lid') });
})
});
</script>
瘦子
基本上,每次检查一个方框时,都会向自己发出GET请求并执行+!在会议上。这意味着相反的。因此它会自动检查并取消选中会话变量。该请求与AJAX异步完成并存储数据。 CHECK功能在服务器端完成,在页面加载时使用PHP,在DOM中使用简单的三元运算符。
待办事项
确保在_GET上添加一些验证,你不想存储错误的数据。
此外,这是一种非常肮脏的方式来做这种事情,但这是一种非常少的方式。
祝你好运,如果你有疑问,请告诉我!