Изменение содержимого div с помощью раскрывающегося списка, javascript и PHP

Я ноб, но с удовольствием возьму палку, если вы поможете мне найти ответ;)

У меня есть список категорий в массиве $ cat_array. Я хочу создать выпадающее меню, чтобы при выборе одного из параметров другая переменная передавалась функции.

Это то, что у меня есть до сих пор: в главном файле (index.php) я вызываю функцию:

makechoice($cat_array); 

Это относится к этой функции, которая находится во включенном файле:

 function makechoice($cat_array) { $dbz = new db(); $sim = new simple(); echo '<div class="choose-section">'; echo '<select class="selbox" onchange="categoryAjaxData(\'facebook\',\'/includes/fancount.php\',this.value);">'; foreach($cat_array as $cat) { echo('<option value="'.$cat[0].'">'.$cat[1].'</option>'); } echo '</select>'; echo 'Choose a section'; echo '</div>'; echo '<div id="facebook"><div class="facebook-midcut">',showfans($djnames, $djids, $djurl),'</div><div class="l-botcut"></div></div>'; } 

В include / fancount.php у меня в основном есть много разных переменных, которые я хочу передать через функцию showfans.

например $ barnames, $ barids, $ barurl & $ restaurantname, $ restaurantids, $ restauranturl

Функция showfans использует эти переменные для отображения некоторых данных о них.

Это мой код javascript:

 function categoryAjaxData(div,str,value) { var url = str+'?catid='+value; ajaxData(div,url); } function ajaxData(div,str) { xmlHttp=GetXmlHttpObject(); document.getElementById(div).innerHTML='<center><img src="images/loader.gif"></center>'; if(xmlHttp==null) { alert("Browser does not support HTTP Request") return } var url = str; xmlHttp.onreadystatechange = function(){ DescriptionstateChanged(div); }; xmlHttp.open("GET",url,true); xmlHttp.send(null); } function DescriptionstateChanged(div) { if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { document.getElementById(div).innerHTML=xmlHttp.responseText; } } 

В MOMENT: содержимое в текущем обновлении facebook div, я вижу загрузчика, но я застрял в том, как связать опцию, выбранную в раскрывающемся списке select, чтобы изменить переменные в функции showfans ().

Например, я хочу, чтобы в раскрывающемся списке «Бар» показывался:

 echo '<div id="facebook"><div class="facebook-midcut">',showfans($barnames, $barids, $barurl),'</div><div class="l-botcut"></div></div>'; 

Я хочу «Ресторан» в раскрывающемся списке, чтобы показать:

 echo '<div id="facebook"><div class="facebook-midcut">',showfans($restaurantnames, $restaurantids, $restauranturl),'</div><div class="l-botcut"></div></div>'; 

Надеюсь, это поможет! Заранее спасибо 🙂

ОБНОВИТЬ:

Что касается fancount.php, я рассматривал различные варианты – но я не могу заставить их работать!

Я хочу передать значение из выпадающего списка в логику, так что в зависимости от выбранного varlue определенные переменные используются showfans (), а выходной код выглядит так же, как и для различной комбинации переменных:

echo '', showfans ($ restaurantnames, $ restaurantids, $ restauranturl), '';

n00b! Хорошо, торчась в сторону 🙂

Вы передаете 'facebook-midcut' в свою функцию categoryAjaxData() . Означает ли возможный поиск DOM, имеете ли вы в виду div с id или div с этим классом? Если вы используете libray, например jquery, он не будет знать, какой узел вы имеете в виду без дальнейшей классификации. Я бы предположил, что вы пытаетесь получить тот, у кого есть класс, поэтому вы не можете использовать getElementById() .

Вы также можете добавить косую черту в начало 'includes/fancount.php' . Добавление косой черты к началу этого означает, что путь будет ссылаться на корневой каталог вашего сайта, а не на ваше текущее местоположение на сайте.

Вы используете какую-то библиотеку js? Было бы полезно увидеть вашу функцию ajaxData, так как проблема вполне может быть там.

Быстрый совет для вас. Узнайте, когда использовать одиночные и двойные кавычки в PHP. Это сделает ваш код проще и быстрее. echo "<div id=\"facebook-midcut\">"; может быть записано как echo '<div id="facebook-midcut">';

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

ОБНОВИТЬ:

Я предполагаю, что функция DescriptionstateChanged(div) – это то, где фактическое обновление div происходит, но вы никогда не передаете ему объект xmlHttp. Является ли это глобальным объектом? Если нет, вам определенно нужно передать его функции DescriptionstateChanged() и я бы порекомендовал, чтобы он не был глобальным объектом. Если функция DescriptionstateChanged() – это место, где происходит фактическое обновление div, вы также можете опубликовать эту функцию?

Вы можете изменить это:

 echo '<select class="selbox" onchange="categoryAjaxData("facebook-midcut","/includes/fancount.php",this.value);">'; 

с этим:

 echo '<select class="selbox" onchange="categoryAjaxData(\'facebook-midcut\',\'/includes/fancount.php\',this.value);">'; 

Обратите внимание, что вывод вашего кода будет недействительным. HTML:

 <select class="selbox" onchange="categoryAjaxData("facebook-midcut","/includes/fancount.php",this.value);">