Изменение содержимого div с использованием раскрывающегося списка, JavaScript и PHP - PullRequest
0 голосов
/ 03 февраля 2011

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

У меня есть список категорий в массиве $ 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;
    }
} 

НА МОМЕНТ: Содержимое в текущем div-файле facebook перезагружается, я вижу загрузчик - но я застрял в том, как связать выбранную опцию в выпадающем списке 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>';

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

UPDATE:

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

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

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

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

n00b!ОК, не мешайте: -)

Вы передаете 'facebook-midcut' своей функции categoryAjaxData().Знает ли возможный DOM-поиск, имеете ли вы в виду div с id или div с этим классом?Если вы используете библиотеку типа 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, можете ли вы также опубликовать эту функцию?

0 голосов
/ 03 февраля 2011

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

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);">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...