从mysql填充第二个下拉菜单

时间:2013-02-25 13:01:37

标签: php mysql ajax

我看到有些人在问题之前提出过问题,但没有人回答我的问题。 我有关于ajax和php的问题。在他们两个我都是相对初学者。

我尝试做的是所谓的:链式选择框。我想要2个下拉菜单。当我从第一个中选择一个值时,然后从mysql数据库中填充第二个下拉菜单。

为此,我使用jquery,ajax,php和mysql。

我试图在网上找到一些例子,但我觉得所有这些都很复杂(我猜我是初学者)。

我决定自己制作一些东西,但我已经堆积了。我不确定逻辑是否正确。

所以我们这里(我将在此仅包含相关代码):

使用jquery我发送一个ajax请求:

    $("#loc").change(function(){
     var val = ($('#loc').val());

        $.ajax({
        type:'POST',
        url:'query.php',
        data: {val:val},
        success:function(response){
            $("#x").html(response);
        } });
    });

“loc”是第一个下拉菜单的ID。我得到了值,然后将其发送到query.php

query.php包含以下代码行:

 <?php

include('connect.php'); 
$area = $_POST['val'];
$query ="SELECT DISTINCT activity FROM main ORDER BY 1 where n_city='$area'";
$result = mysqli_query($dbcon, $query) or die('no available data');
$options="";
while ($row=mysqli_fetch_array($result, MYSQLI_ASSOC)){
$activity=$row["activity"];

 }
 ?>

现在我想弄清楚两件事。 1)我应该在成功函数中返回什么,以便获得一个填充了查询结果的表单? 2)第二个也是最重要的,我的想法是否正确或者我错过了一些逻辑错误?

非常感谢。 迪米瑞斯

1 个答案:

答案 0 :(得分:1)

  1. 干净的解决方案是返回包含第二个下拉列表的所有选项的JSON数组。这可以通过创建普通的PHP数组然后使用json_encode()轻松完成。您可以循环结果并在JS函数中创建新选项。

  2. 肯定会像这样工作。但是,可能值得花时间学习如何使用其中一种可用的解决方案。