Ajax多个复选框显示动态内容

时间:2018-03-15 22:20:14

标签: php jquery ajax

我正在尝试在用户通过复选框请求的网页上显示不同的内容。

我有一个显示多个复选框的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);
  1. 问题
  2. 如果我取消选中该框没有任何反应(因为我没有实现它),但我真的不知道它是如何完成的。

    //编辑 如果我尝试在#A1中放置“NULL”,则无需更改。

    如果我从#A2传递else语句,则sql-query将为空,我可以捕获并显示任何内容,但也会出现致命错误

    1. 问题
    2. 如果我使用已发布的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});
              }
          });
      });
      });
      

      现在它适用于每个复选框,但如果我标记多个,则内容仍未保留。

      其次,取消选择仍然会产生一些问题。

      1. 如果我取消选中一个复选框,我会收到类型错误:document.getElementById(...)为null
      2. 处理else语句仍然无法正常工作。我得到一个像sql一样的查询 “FROM Sidebar WHERE Sidebar_Level =''”导致“可恢复的致命错误”
      3. 如果我尝试在php中捕获else语句,例如:

        if(!is_null($_POST['postcheck']){//do sql}
        else{//print nothing}
        

        完整的PHP脚本不再起作用了。

1 个答案:

答案 0 :(得分:0)

这个解决方案仍然无法完美地实现我想要实现的目标,但是,它可以帮助其他初学者更好地理解使用php,ajax和jquery的复选框。

此时,特别感谢Taplar的帮助。

The current toggle menu

$(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的数组大部分时间看起来像(例子):

  • 数组([0] =&gt; A1)
  • 数组([0] =&gt; A1 [1] =&gt; A2 [2] =&gt; B1)

取消选择在大多数情况下也会起作用(有时会发生随机的事情),除非只选择了一个元素,例如 Array([0] =&gt; A1)。然后数组永远不会变成空数组。

我希望有人可以使用这个或者可能对这个主题有进一步的想法。