Я ноб, но с удовольствием возьму палку, если вы поможете мне найти ответ;)
У меня есть список категорий в массиве $ 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);">