Итак, у меня есть php-массив, который я кодирую JSON и передаю JQuery. В основном я использую информацию из массива, чтобы динамически изменять содержимое одного раскрывающегося списка на основе значения другого раскрывающегося списка. Я сталкиваюсь с некоторыми проблемами с JQuery, хотя JQuery для меня довольно новичок.Итерация через php-массив в jQuery
Во-первых мой PHP:
<?php
$sql = mysql_query("SELECT * FROM menu") or die(mysql_error());
$menuItems = array();
$x = 0;
while($row = mysql_fetch_object($sql))
{
$menuItems[$x]['ID'] = $row->ID;
$menuItems[$x]['parent'] = $row->parent;
$menuItems[$x]['name'] = $row->Name;
$menuItems[$x]['header'] = $row->header;
$menuItems[$x]['Sort'] = $row->sort;
$x++;
}
?>
Этот код возвращает массив ~ 30 пунктов меню.
Тогда мой JQuery:
<script>
var menuItems = <?php echo json_encode($menuItems); ?>;
$('#dropdown1').change(function(){
if($('#dropdown1').val() == 0){
$('dropdown2').children().remove().end()
for(var x = 0; x < menuItems.length; x++){
if(menuItems[x]['header'] == 1){
$('#dropdown2').options[menuItems[x]['sort']] = new Option(menuItems[x]['name'], menuItems[x]['sort']);
}
}
}
});
</script>
То, что я хочу, чтобы это сделать, когда dropdown1 изменяется, параметры dropdown2 в удаляются, а затем заселен с конкретными вещами из массива.
В настоящее время этот код действительно удаляет параметры dropdown2 при изменении dropdown1, но перенаселение просто не работает. Из того, что я могу сказать при тестировании, цикл for для итерации по массиву вводится только один раз, несмотря на то, что в нем около 30 элементов, и я полагаю, что это была моя главная проблема.
Что я здесь делаю неправильно?
PHP работает на сервере при создании страницы. Содержимое 'menuItems' не будет изменяться динамически. Вам нужно использовать AJAX для получения нового набора элементов меню с сервера. – Barmar
Что делает '$ ('# dropdown2'). Options []' do ???? У вас есть плагин, о котором вы нам не рассказываете, или вы путаете объекты jQuery с собственными элементами DOM. – adeneo
1. Это объект javascript, а не «php-массив». 2. Вы, кажется, недопонимаете, что «jQuery» является основой для javascript, а не другим языком. У вас может быть javascript без jQuery, но вы не можете иметь jQuery без javascript. Ваш код - это javascript, использующий некоторые части рамки jQuery, но такие вещи, как циклы и т. Д., Не должны передавать jQuery вообще. – h2ooooooo