php下拉菜单人口

时间:2009-02-06 21:23:19

标签: php jquery drop-down-menu

我正在尝试编写一个php脚本,该脚本将根据主要下拉菜单的选择填充第二个下拉菜单。我想用jquery来做所有非页面刷新的东西。但是我发现存在的所有东西都很难理解和修改,你知道任何写得好但易于理解的东西,或者是那里存在的教程吗?

4 个答案:

答案 0 :(得分:4)

这里有一些代码可以让你知道你想要做什么:

<强> HTML

<select id="state" name="state">
    <option value="IL">Illinois</option>
    <option value="IN">Indiana</option>
</select>
<select id="city" name="city">
    <option value="">Please select a state...</option>
</select>

<强> PHP

<?php
    $cities = array(
        'IL' => array( 'Chicago', 'Naperville', 'Decatur', 'Saint Charles' ),
        'IN' => array( 'Gary', 'Miller', 'Portage', 'Merrillville' )
    );

    print json_encode( $cities[ $_POST[ 'state' ] ] );
    exit;
?>

<强>的jQuery

jQuery(document).ready(function() {

    jQuery('#state').change(function() {
        jQuery.post(
            'some-url.php',
            {
                'state':jQuery('#state').val()
            },
            function(data, textStatus) {
                jQuery.each(data, function(index, value) {
                    jQuery('#city').append('<option value="' + value + '">' + value + '</option>');
                });
            },
            'json'
        );
    });

});

答案 1 :(得分:2)

有很多关于如何在网络上执行此操作的示例,一个来自Remy Sharp的好here的博客(full example here

基本上你正在做的是在你的服务器上调用一个PHP页面,其中包含你的第一个下拉列表的值。例如,如果您的第一个下拉列表是美国的州名列表,则您的第二个下拉列表可能会显示处于所选州的城市。当选择第一个下拉列表时,它的onChange事件会触发对服务器上PHP页面的请求,并传递州名称(example.com/city_lookup.php?state=NY

JQuery然后从city_lookup脚本接收响应(JSON encoded可能是最好的方法),然后循环遍历它并将值写入第二个下拉菜单。 / p>

答案 2 :(得分:2)

再添加一行jQuery('#city').html('');
现在代码看起来像:

jQuery(document).ready(function() {

    jQuery('#state').change(function() {

          jQuery('#city').html('');   
          jQuery.post(
                'some-url.php',
                {
                        'state':jQuery('#state').val()
                },
                function(data, textStatus) {
                        jQuery.each(data, function(index, value) {
                                jQuery('#city').append('<option value="' + value + '">' + value + '</option>');
                        });
                },
                'json'
        );
    });

});

答案 3 :(得分:0)

两种不同的方式:

  • 使第一级触发AJAX查询,返回第二级所需的数据
  • 使用所有可能选择的所有所需数据编写树结构,并将其隐藏在初始页面中Javascript可以读取的位置。完成的HTML菜单(根据需要隐藏和显示)或JS部分中的大型JSON对象。