Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Работа с Ajax и PHP


Автор: MedvedDima 5.11.2008, 15:36
Помогите пожалуйста!!!
Есть два выпадающих списка. В одном хранятся имена типов товаров, а в другом товары по выбраному типу. Как можно сделать так чтоб при выборе элемента в первом списке (с типами товаров) во втором выводились только нужные мне элементы без перезагрузки страницы. Я так понимаю это должно быть организовано на Ajax'е. Но с ним я никогда не работал. Помогите плиз.

Автор: skyboy 5.11.2008, 16:22

M
skyboy
Тема перенесена из "РНР: Общие вопросы"

AJAX == Asynchronious Javascript And Xml
к РНР никакого отношения.

Автор: Edd 5.11.2008, 16:23
Небольшой похожий примерчик только с странами и городами
Данные хранятся в базе

Файл form.php
Код

<script type="text/javascript">
var request=false;
try 
{
    request = new XMLHttpRequest();
} 

catch (trymicrosoft) 
{
    try 
    {
        request = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    
    catch (othermicrosoft) 
    {
        try 
        {
            request = new ActiveXObject("Microsoft.XMLHTTP");
        } 
        
        catch (failed) 
        {
            request = false;
        }
    }
}
   
if (!request)
{
     alert("Error initializing XMLHttpRequest!");
}

function load_city_list()
    {    
        
        var country = document.getElementById("country_id");//Получаем выбранную страну
        var country_value = country.options[country.selectedIndex].value;
        //alert (country_value);
        url="get.php?action=addcity&id_country="+country_value;
        request.open("GET", url, true);
        request.onreadystatechange = get;
        request.send(null);
    }
function get()
{
    if (request.readyState == 4 && request.status == 200)
    {
//Выводим в нужный див
        document.getElementById("city_div").innerHTML="<select id='city_id' name='city_name'>"
                        + "<option value='0'>Select City</option>"
                        + request.responseText
                        + "</select>";
    }
}
function submit_check()
{    xajax.$('submitButton').disabled=true;
    xajax.$('submitButton').value="please wait...";
    xajax_processForm(xajax.getFormValues("signupForm"));
    return false;
}

</script>


Сдесь уже то, что в body
Код

<tr>
                    <td>Country</td>
                    <td><select name="Country" id="country_id" onchange="load_city_list()" >
                        <option value="0" selected>Select Country</option>
                            <? foreach ($result as $row){?>
                            <option value="<?=$row["id"]?>"><?=$row["Country"]?></option>
                            <?}?>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>City</td>
                    <td>
                        <div id="city_div">
                        <select name="City" id="city_id" >
                          <option value="0">Select City</option>
                            <? foreach ($list_Manufacturer as $row){ ?>
                                <option value="<?=$row["id"]?>"><?=$row["name"]?></option>
                            <?}?>
                        </select>
                        </div>
                    </td>
                </tr>

-------------------------------------------------
далее get.php - выйл, где с базы получаем данные и выводим их на экран, AJAX этот текст возьмет и вставит куда вам надо

Код

$action=$_REQUEST["action"];
switch($action)
    {
    case "addcity":
        {
        $my = new MySql();
        $result=$my->getCity($_REQUEST["id_country"]);
        if (!empty ($result))
            {            foreach ($result as $row)
                {    
                    ?>
                    <option value="<?=$row["id"]?>"><?=$row["city"]?></option>
                    <?
                }
            }
        break;
        }


Надеюсь разберёшся

Автор: MedvedDima 5.11.2008, 18:42
Спасибо большое!!! Помогли.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)