需要从检查项目通过javascript和php拉数据库信息


Need to pull database information from checked item via javascript and php

我有一个从数据库数组填充的列表,如下所示:

$i = 0;
foreach ($category_label as $value) {
echo '<input id="'.$category_label[$i].'" type="checkbox" name="q1" value="'.$category_label[$i].'">
<label for="'.$category_label[$i].'">'.$category_label[$i].'</label><br />';
$i++;  

可以看到,这将从数据库数组中构建一个带有复选框的项列表。下一步是,如果用户选择了其中一个复选框,我需要显示一个新的关联项数组。这里是javascript和相关的<div>,我已经开始这样做:

JS:

$(function() {
    $('input[name=q1]').on('change', function () {
        var valu = this.value;
            if (this.checked) {
                    $('#q2').append("<li><a href='#'>" + valu + "</a></li>");
                    $('#question2').show();
            } else {
                var lis = $("#q2").find('li');
                lis.each(function () {
                if ($(this).text() === valu) {
                    $(this).remove();
                }
            });
            if (lis.length === 0) {
                $('#question2').hide();
            }
        }
    });
 });

有关PHP:

<div id="question2" class="question">
<p>Results:</p>
<ul id="q2"></ul>
</div>

好的,那么现在,js脚本中的var valu = this.value;question2div中显示选中的项目。相反,我需要从选中的项目中获得类别id值,然后拉出具有关联父类别的所有子项目来填写列表。我如何修改我的php和js这样做?


更新:

这个问题得到一些反馈,认为它太宽泛了。让我进一步说明这个问题,以便找到一个好的解决办法。我修改了第一个PHP脚本,将所选项的类别id作为值拉到输入项中。下面是更新:

 echo '<input id="'.$category_label[$i].'" type="checkbox" name="q1" value="'.$category_id[$i].'"><label for="'.$category_label[$i].'">'.$category_label[$i].'</label><br />';

现在,我只需要找到一种方法通过javascript传递这个值,并获得与该类别值相关联的项目数组,以显示在输出列表中。

我猜你想做的是这样的:

HTML:

<input id="101" type="checkbox" name="q1" value="aaa">
<label for="101">category A</label><br />
<input id="102" type="checkbox" name="q1" value="bbb">
<label for="102">category B</label><br />
<input id="103" type="checkbox" name="q1" value="ccc">
<label for="103">category C</label><br />
<div id="question2" class="question">
    <p>Results:</p>
    <ul id="q2"></ul>
</div>
JavaScript:

$(function () {
    $('input[name=q1]').on('change', function () {
        var valu = $(this).val();
        if ($(this).is(':checked')) {
            $('#q2').append("<li><a href='#'>" + valu + "</a></li>");
            $('#question2').show();
        } else {
            var lis = $("#q2").find('li');
            lis.each(function () {
                if ($(this).text() === valu) {
                    $(this).remove();
                }
            });
            if (lis.length === 0) {
                $('#question2').hide();
            }
        }
    });
});
DEMO: http://jsfiddle.net/2Yz8j/3/