使用Javascript从DB中筛选结果,这将使DIV重新加载它';基于新参数的内容


Filtering results from a DB with a Javascript that will make a DIV reload it's contents based on new arguments

我需要创建一个带有复选框的表单来过滤从MySQL表中提取的结果。理想情况下,在单击特定的复选框后,将重新加载DIV,运行适当的PHP和PDO查询来过滤所选的条件。

到目前为止,这是我的代码,但它似乎不起作用。。。

有什么建议吗?

谢谢!

<script>
    $(document).ready(function() {
        $("#colors").change(function() {
            console.log("changed...");
            var data = $(this).serialize();
            console.log(data);
            $("#indexMain").load("index.php?data="+data)
        });
    })
</script>
<div class="colors">
    <form method="post" action="index.php">
        <?php
            $colors = mysql_query("SELECT DISTINCT color_base1 FROM item_descr ORDER BY color_base1");
            while ($colorBoxes = mysql_fetch_array($colors))
            {
                echo "<input type='checkbox' name='color' value='".$colorBoxes[color_base1]."' /> ".$colorBoxes[color_base1]."<br />";
            }
        ?>
        <input type="submit" onclick="document.formName.submit();" />
    </form>
</div>

我在div中得到的值如下:

$color = $_POST['color'];
if ($selectedColor == '') 
{
$items = mysql_query("SELECT * FROM item_descr");
}
else 
{
$items = mysql_query("SELECT * FROM item_descr ORDER BY $color");
}

Colors是您的div的名称,但我认为您希望在您的复选框上激发on change,这些复选框的名称为color,而没有s

$(document).ready(function() {
    $("input[type=checkbox][name=color]").change(function() {
        console.log("changed...");
        var data = $(this).serialize();
        console.log(data);
        $("#indexMain").load("index.php?data="+data)
    });
})

#colors正在查找具有id='colors'的元素。要查找类,选择器必须以句点开头,如.color。在您的任务中,将<div class="colors">更改为<div id="colors"> 可能是合理的

我也没有找到一个具有id=indexMain$("#indexMain"))的元素。

你的代码可以这样写:

<script>
$(function() { // short form of jQuery usage
    $(".color").change(function() {
        console.log("changed...");
        var data = $(this).serialize();
        console.log(data);
        $("#indexMain").load("index.php?data="+data)
    })
})
</script>
....
<select class="color"> // your options here
    <option value="option1">Option 1</option> 
    <option value="option2">Option 2</option>
</select>
....
<div id="indexMain"></div>

但它使用了一个选择列表,我没有测试它——在编辑器中编写了代码。

也许你的意思是:

  $('input[name=color]').change(....