我正在尝试在用户通过复选框请求的网页上显示不同的内容。
我有一个显示多个复选框的php侧边栏。
<label><input id="<?php echo $side_oq['Sidebar_Content']; ?>" type="checkbox"><?php echo $side_oq['Sidebar_Content']; ?></label>
由于我对JQuery和Ajax并不熟悉,所以我做了一些挖掘并提出了一个请求。
的Ajax
$(document).ready(function(){
$('#A1').change(function() {
if($(this).is(':checked')) {
var check = $(this).attr("id");
$('.home_textbox_1').load("sideRead.php", {postcheck: check})
}else{
$('.home_textbox_1').load("sideRead.php", {postcheck: NULL})
}
});
});
$(document).ready(function(){
$('#A2').change(function() {
if($(this).is(':checked')) {
var check = $(this).attr("id");
$('.home_textbox_1').load("sideRead.php", {postcheck: check})
}else{
//$('.home_textbox_1').load("sideRead.php", {postcheck: 0})
}
});
});
PHP
//sideRead.php
$side_content_sql="SELECT *
FROM Sidebar
WHERE Sidebar_Level='".$_POST['postcheck']."'";
$side_content_query = mysqli_query($dbconnect, $side_content_sql);
$side_content_oq = mysqli_fetch_assoc($side_content_query);
如果我取消选中该框没有任何反应(因为我没有实现它),但我真的不知道它是如何完成的。
//编辑 如果我尝试在#A1中放置“NULL”,则无需更改。
如果我从#A2传递else语句,则sql-query将为空,我可以捕获并显示任何内容,但也会出现致命错误
如果我使用已发布的ajax代码两次并更改 $('#A1')。将(function(){更改为 $('#A2')。change(function(function( ){#A2“覆盖”#A1但如果两者都被选中,我想显示两者
//编辑2
我将Ajax代码更改为:
$(document).ready(function(){
$('.sideRead_Level').each(function() {
$(this).change(function() {
if($(this).is(':checked')) {
var check = $(this).attr("id");
$('.home_textbox_1').load("sideRead.php", {postcheck: check});
}else{
$('.home_textbox_1').load("sideRead.php", {postcheck: null});
}
});
});
});
现在它适用于每个复选框,但如果我标记多个,则内容仍未保留。
其次,取消选择仍然会产生一些问题。
如果我尝试在php中捕获else语句,例如:
if(!is_null($_POST['postcheck']){//do sql}
else{//print nothing}
完整的PHP脚本不再起作用了。
答案 0 :(得分:0)
这个解决方案仍然无法完美地实现我想要实现的目标,但是,它可以帮助其他初学者更好地理解使用php,ajax和jquery的复选框。
此时,特别感谢Taplar的帮助。
$(document).ready(function(){
$('input.sideButton').change(function() {
var checked = [];
$("input[name='sideShow']").each(function() {
$(this).change(function() {
$("input[name='sideShow']:checked").each(function (){
checked.push($(this).val());
$('.home_textbox').load("example.php", {postcheck: checked});
});
checked = [];
});
});
});
});
在我的代码中仍然存在一些其他问题,我猜这些问题是由其他事情引起的,但是,如果我检查文本框,推送到php的数组大部分时间看起来像(例子):
取消选择在大多数情况下也会起作用(有时会发生随机的事情),除非只选择了一个元素,例如 Array([0] =&gt; A1)。然后数组永远不会变成空数组。
我希望有人可以使用这个或者可能对这个主题有进一步的想法。