Я знаю, как заполнить один раскрывающийся список со значениями из базы данных с помощью jQuery. Но теперь мне нужно сделать длинный запрос, чтобы отфильтровать 5 полей таблицы, используя раскрывающийся список. То есть, выбрав первый, мне нужно изменить оставшееся значение списка выпадающих списков, и, изменив второе раскрывающееся меню, мне нужно изменить остальные 3 выпадающего списка и так далее. Для изменения одного раскрывающегося списка я использовал Ajax для отправки URL-адреса, а затем вернул html и разместил его внутри поля select.
jQuery.ajax({ type: "POST", url: "getdb/tb", data: '{data : "data" }', success: function (data) { jQuery("select#field_1").html(returnval); }, failure: function (response) { alert("failed"); } });
И в моем URL-адресе «getdb / tb» я отфильтровываю запрос с помощью инструкции SELECT и выхожу из поля опций.
Но я не знаю, как отправить несколько полей опций html в мои 4 других выпадающих списка с одной функцией изменения, перенесенной в первый раскрывающийся список. Пожалуйста, помогите и обратитесь ко мне новичком. Заранее спасибо.
ОБНОВЛЕНИЕ: Это хороший способ сделать это
jQuery.ajax({ - - success: function(data){ callfirst(); } }); function callfirst(){ jQuery.ajax({ - - success: function(data){ callsecond(); } }); } function callsecond(){ jQuery.ajax({ - - success: function(data){ callthird(); } }
Ваш путь в порядке, но для вызова значений опций для всех полей выбора потребуется много вызовов ajax. Вы можете выполнить это в одном вызове ajax с помощью JSON. На странице PHP вы можете создать массив, который будет содержать строки HTML, представляющие параметры для четырех полей выбора. Затем вы можете преобразовать этот массив в строку JSON, используя функцию json_encode ():
$arr=array("second"=>"<option>....</option>.......<option...</option>", //for second dropdown "third"=>"<option>....</option>.......<option...</option>", //for third dropdown "fourth"=>"<option>....</option>.......<option...</option>", //for fourth dropdown "fifth"=>"<option>....</option>.......<option...</option>" //for fifth dropdown ); echo json_encode($arr);
Затем на веб-странице для первого выпадающего меню вы можете написать функцию jQuery следующим образом:
function loadOptions(){ jQuery.ajax({ success: function(data){ jQuery("select#field_2").html(data["second"]); jQuery("select#field_3").html(data["third"]); jQuery("select#field_4").html(data["fourth"]); jQuery("select#field_5").html(data["fifth"]); } }); }
Таким образом, вы можете загрузить параметры для всех других выпадающих списков в одном вызове ajax. Я понимаю, что вам нужна аналогичная функциональность и для других выпадающих списков. Вы можете написать аналогичную функцию для других выпадающих меню. Вот обобщенная функция, в которой вы передаете выпадающий номер, и функция вернет параметры для целевых выпадающих списков. Например, если вы передадите выпадающий номер 2, функция вернет параметры для выпадающих списков 3, 4 и 5. Если вы пройдете 3, они вернут опции для выпадающих списков 4 и 5 и т. Д.
function loadOptions(selectNo){ jQuery.ajax({ data:{"selectNo",selectNo}, success: function(data){ switch(selectNo){ case 1: jQuery("select#field_2").html(data["second"]); case 2: jQuery("select#field_3").html(data["third"]); case 3: jQuery("select#field_4").html(data["fourth"]); case 4: jQuery("select#field_5").html(data["fifth"]); } } }); }
На странице PHP вы можете написать код ниже для реализации этой функции:
$selectNo=$_GET["selectNo"]; $arr=array(); switch(selectNo){ case 1: $arr["second"]="<option>....</option>.......<option...</option>"; //for second dropdown case 2: $arr["third"]="<option>....</option>.......<option...</option>"; //for third dropdown case 3: $arr["fourth"]="<option>....</option>.......<option...</option>"; //for fourth dropdown case 4: $arr["fifth"="<option>....</option>.......<option...</option>"; //for fifth dropdown } echo json_encode($arr);
Более подробную информацию о JSON можно найти здесь .