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


Автор: ДенисSky 5.1.2011, 22:06
Нужна помощ перерыл весь инет есть похожее, но т к я начинающий в JS для меня очень тяжеловато както, только не бейте ногами))))
в общем суть
Нужно реализовать запрос и вывод информации на форму
    <script language="JavaScript">  
    function func1() { 
        var strana = document.getElementById('menu') 
        var stranaName=new Array('ang','rus','fra','ukr');
        var stranaNameRus=new Array('Англия','Россия','Франция','Украина')
        var stranaSena=new Array('232','111','333','444')
        /// что сюда вставить для обработки информации, чтобы при выборы страны в SELECT выводилось Название страны на русском и цена
    }  
    </script> 
</head>

<body>

<p>Выберите страницу для открытия</p>

    <form name=Vubor> 
        <select name="menu" id='menu' value="Выберите страну">  
        <option value="all">Все 
        <option value="ang">Англия</option> 
        <option value="rus">Россия</option> 
        <option value="fra">Франция</option> 
        <option value="ukr">Украина</option> 
        </select> 
        <INPUT Type="button" VALUE="Поиск" onClick="func1()"> 
    </form> 


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

пример как на картинке

Автор: Amphiluke 5.1.2011, 22:20
А причем здесь AJAX, если у вас выводимые данные зашиты прямо в Javascript-код (массивы stranaNameRus и stranaSena)? И куда эти данные должны выводиться конкретно?

Автор: ДенисSky 5.1.2011, 22:25
Я считываю информацию с SELECT, (нужно сделать без перезагрузки страници) в браузере долно под селектом вывести информацию типа
 Страна    Цена
   name      sena   
возможно иначе нужно записать массив



P S по идеи JS будет в отдельном файле который я буду просто вызывать

Добавлено через 4 минуты и 58 секунд
    Вот вариант без ajax но мне нужно без обновлении страници
Да еще подскажите как всунуть индикатор загрузки при нажатии Button



<script language="JavaScript">  
    function func1() { 
        var strana = document.getElementById('menu') 
        strana=strana.options[strana.selectedIndex].value 
        var stranu = new Array(['ang','Англия','3434'],['rus','Россия','34322'],['fra','Франция','2323'],['ukr','Украина','23211']) 
        for (var i=0; i <stranu.length ; i++) { 
            if (strana==stranu[i][0]) { 
    
                document.write('Название страны  ',stranu[i][1],'<br>','Цена товара   ',stranu[i][2]) 
            } 
        } 
    }  
    </script>  
</head> 
    <body> 
    <form name=Vubor> 
        <select name="menu" id='menu' value="Выберите страну">  
        <option value="all">Все 
        <option value="ang">Англия</option> 
        <option value="rus">Россия</option> 
        <option value="fra">Франция</option> 
        <option value="ukr">Украина</option> 
        </select> 
        <INPUT Type="button" VALUE="Поиск" onClick="func1()"> 
    </form> 



Автор: Amphiluke 5.1.2011, 22:39
Цитата(ДенисSky @  6.1.2011,  01:25 Найти цитируемый пост)
  Вот вариант без ajax но мне нужно без обновлении страници

Ну вы даете.  smile   Не всё то AJAX, что делается без обновления страницы.


Код

    function func1() { 
        var strana = document.getElementById('menu'); 
        strana=strana.options[strana.selectedIndex].value;
        var stranu = {'ang':['Англия','3434'],'rus':['Россия','34322'],'fra':['Франция','2323'],'ukr':['Украина','23211']};
        var output = '<p>Название страны: ' + stranu[strana][0]+'<br>Цена товара: '+stranu[strana][1]+'</p>';
        document.body.innerHTML += output;
    }

Автор: ДенисSky 5.1.2011, 23:01
Amphiluke,  Огромное спасибо, если не трудно подскажи источник где искать индикатор загрузки при этом процесе, или исходник

Автор: Amphiluke 5.1.2011, 23:12
Не вижу смысла в индикаторе загрузки в этом прцессе. Ничего ведь не загружается. Абсолютно. Вот если бы использовался AJAX, тогда другое дело. Здесь же вообще никакого общения с сервером не происходит, никаких задержек нет, так что нет надобности в индикаторе... Разве не так?

Автор: ДенисSky 5.1.2011, 23:17
Цитата(Amphiluke @ 5.1.2011,  23:12)
Не вижу смысла в индикаторе загрузки в этом прцессе. Ничего ведь не загружается. Абсолютно. Вот если бы использовался AJAX, тогда другое дело. Здесь же вообще никакого общения с сервером не происходит, никаких задержек нет, так что нет надобности в индикаторе... Разве не так?

хм, смысл в том что нужно сделать через общение с сервером возможно что даже резез Ajax и с индикатором загрузки
Вот ниже пример(только выводить нужно 1ю и последнюю колонку)

Автор: ДенисSky 5.1.2011, 23:19
Вот индикатор

Автор: ДенисSky 5.1.2011, 23:19
Ну и вот собствено результат

Автор: Amphiluke 5.1.2011, 23:22
Стало быть, у вас уже готово серверное приложение (сценарий), которое будет обрабатывать AJAX-запросы? Тогда к чему вся эта музыка с массивами была?  smile  Тогда и javascript-сценарий будет совершенно другой. smile 

Автор: ДенисSky 5.1.2011, 23:35
В том то и дето что это просто пример как сделать надо, а нужно реализовать свою модель

Автор: Amphiluke 5.1.2011, 23:39
Вот тогда вам пример с AJAX  smile 
Код

    function createReqObj() {
        try {
            return new XMLHttpRequest();
        } catch(e) {
            try {
                return new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
                return new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
    }
    function func1(value) {
        var req = createReqObj();
        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                if (req.status == 200) {
                    // скрываем индикатор загрузки
                    document.getElementById("indicator").style.display = "none";
                    // выводим данные в специальный контейнер с id="output"
                    document.getElementById("output").innerHTML = req.responseText;
                }
            }
        }
        // php.php - это ваш серверный сценарий, обрабатывающий AJAX-запросы
        request.open("GET", "php.php?country=" + encodeURIComponent(value));
        request.send(null);
        // отображаем индикатор загрузки
        document.getElementById("indicator").style.display = "block";
    }

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