Как загрузить второй список DropDown из базы данных после изменения первого DropDownList

Я создаю веб-приложение. В какой-то момент пользователю необходимо ввести данные в форму. Эта форма имеет несколько текстовых полей иDropDownLists.

Один из DDL зависит от предыдущего DDL. Что происходит, когда пользователь выбирает значение из первого DDL, второй DDL должен загружать данные из базы данных, которые связаны с выбранным значением первого DDL.

До этого момента я реализовывал толькоPHP а такжеJS, (нетAJAX, jQuery или что-нибудь еще) для решения большинства моих проблем.

Я хотел бы знать, как заполнить второй DDL из базы данных после того, как был выбран элемент в первом DDL.

Любая помощь будет оценена. Спасибо!

 Moyed Ansari12 мая 2012 г., 20:01
вероятно, Ajax будет лучшим решением
 hermann12 мая 2012 г., 19:59
@PedroFerreira Я хотел бы знать, как реализовать такую функцию.
 ubik12 мая 2012 г., 19:55
А какой у тебя вопрос?

Ответы на вопрос(4)

то что-то вроде этого должно сделать:

$("#dropdown").on("change", function() {//change [dropdown] to the actual ID of your dropdown
    var selected=$(this).find("option:selected").val();//assuming your dropdown has a value to send, otherwise use text()

    $.get("options.php?selected="+selected, function(data) {
        var options=data.split("\n");
        var newSelectHTML="<select name=\"whatever\">\n";

        for (var i=0;i<options.length;i++) {
            newSelectHTML+="<option>"+options[i]+"</option>";
        }

        newSelectHTML+="</select>";
        $("#form").append(newSelectHTML);//again, change [form] to the correct ID.
    }
}

Этот код просто получает значение выбранной в данный момент опции DDL с идентификатором «выпадающий список» (при необходимости изменяется) и отправляет его в файл PHP options.php в$_GET["selected"];. Предполагая, что этот файл затем выводит список параметров, разделенных новой строкой \n). Затем JavaScript принимает это, разбивает его на строки, перебирает опции и создает HTML для нового DDL и добавляет его к элементу IDform. Там нет обработки ошибок, но это, как говорится, упражнение для читателя. Все, что возвращается, находится в переменнойdata.

то вам придется загрузить значения второго раскрывающегося списка в объект javascript, например:

// Given the options in the first dropdown are: "foo", "bar", and "baz"
var secondData = {
    foo: ['lorem', 'ipsum'],
    bar: [1,2,3],
    baz: []
}

Добавьте событие 'change' к первому раскрывающемуся списку, и, учитывая значение этого раскрывающегося списка, загрузите содержимое второго раскрывающегося списка со значениями, содержащимися вsecondData объект.

 hermann12 мая 2012 г., 20:02
Но данные второго выпадающего списка загружаются из базы данных. Как я это сделал
 Julian H. Lam12 мая 2012 г., 20:03
Тогда тебе придется обратиться к ответу Педро Феррейры.
Решение Вопроса

эт помог

 Julian H. Lam12 мая 2012 г., 20:10
Я исправлен.
 Julian H. Lam12 мая 2012 г., 20:02
В некоторых случаях ajax может быть излишним, особенно из-за необходимого набора данных:н динамический, как и в этом случае. Тем не менее, hermann, пожалуйста, поймите, что ajax - это одно из возможных решений вашей проблемы.
 ubik12 мая 2012 г., 20:05
Ну, он говорит, что «второй DDL должен загружать данные из базы данных», отсюда и AJAX.

Ваш ответ на вопрос