население выпадающего меню php - PullRequest
2 голосов
/ 07 февраля 2009

Я пытаюсь написать php-скрипт, который будет заполнять второе выпадающее меню на основе выбора основного выпадающего меню. Я хотел бы использовать JQuery, чтобы сделать все вещи обновления страницы. но каждую вещь, которую я нахожу, которая существует там, трудно понять и изменить, знаете ли вы что-нибудь, что было хорошо написано и легко понять, или, может быть, учебник, который существует там?

Ответы [ 4 ]

4 голосов
/ 07 февраля 2009

Вот код, который должен дать вам представление о том, что вы хотите сделать:

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'
        );
    });

});
2 голосов
/ 15 июня 2011

Добавить еще одну строку 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'
        );
    });

});
2 голосов
/ 07 февраля 2009

Есть довольно много примеров того, как это сделать в Интернете, хороший пример здесь от Реми Шарпа в его блоге ( полный пример здесь )

По сути, вы вызываете страницу PHP на вашем сервере со значением вашего первого раскрывающегося списка при каждом его изменении. Например, если в первом раскрывающемся списке находится список штатов США, во втором раскрывающемся списке могут отображаться города в выбранном штате. Когда выбран первый выпадающий список, это событие onChange запускает запрос к странице PHP на вашем сервере, передавая имя состояния (example.com/city_lookup.php?state=NY)

Затем JQuery получает ответ от сценария city_lookup ( кодированный JSON , вероятно, лучший способ перейти сюда), затем циклически проходит через него и записывает значения во второе раскрывающееся меню.

0 голосов
/ 07 февраля 2009

двумя разными способами:

  • сделать AJAX-запросы триггера первого уровня, которые возвращают данные, необходимые для второго уровня
  • написать древовидную структуру со всеми необходимыми данными для всех возможных выборов и спрятать их где-нибудь на начальной странице, где ваш Javascript может их прочитать. Либо готовые меню HTML (скрывать и показывать по мере необходимости), либо в большом объекте JSON в части JS.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...