Есть 2 selectbox'a, поля первого генерируются при загрузке скрипта,поля же другого должны генерироваться в зависимости от полей первого.Знаю что это можно сделать с помощью Ajax ,но с его синтаксисом я не знаком,поможите разобраться просто и своим языком...
Спустя 56 минут, 36 секунд (24.01.2007 - 10:22) loginsan написал(а):
"синтаксис Ajax" ;)
Попробуй все-же почитать про основы Ajax - уверен, если котелок варит, сделаешь то что ты хочешь.
Могу попробовать набросать схему:
1) Заведи 2 слоя (<div>) для первого select (он формируется) и для второго (который сформируется после выбора в первом):
2) как видишь в первом селекте стоит обработка события onchange="makeselect();" : здесь makeselect() - функция JavaScript которая формирует запрос к серверному php-скрипту, получает от него ответ и выводит его динамически. См. подробности далее:
3) В своем файле еще нужно прописать подключение файла JavaScript functions.js:
4) Осталось написать код скрипта обработки makeselect.php:
5) вот и все. успехов!
Попробуй все-же почитать про основы Ajax - уверен, если котелок варит, сделаешь то что ты хочешь.
Могу попробовать набросать схему:
1) Заведи 2 слоя (<div>) для первого select (он формируется) и для второго (который сформируется после выбора в первом):
HTML
2) как видишь в первом селекте стоит обработка события onchange="makeselect();" : здесь makeselect() - функция JavaScript которая формирует запрос к серверному php-скрипту, получает от него ответ и выводит его динамически. См. подробности далее:
3) В своем файле еще нужно прописать подключение файла JavaScript functions.js:
JavaScript
var xmlhttp = false; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); } //на этом этапе мы создали экземпляр объекта XMLHttpRequest //собственно полезная функция function makeselect() { var val = document.getElementById("selp").value; //получаем значение в первом select var serverPage = "makeselect.php?v=" + val; //php-скрипт обработчика var obj = document.getElementById("d2"); //элемент, куда поместим результат xmlhttp.open("GET", serverPage); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { obj.innerHTML = xmlhttp.responseText; //про innerHTML знаешь } } xmlhttp.send(null); }
4) Осталось написать код скрипта обработки makeselect.php:
PHP
<?php //header("Content-type: text/html; charset=windows-1251"); - если будет нужен вывод русских букв $v = $_REQUEST['v']; $o = "<select id="selv">"; // в зависимости от значения формируется выводимый select if ($v == 1) $o.= "<option value="1">3</option><option value="2">4</option></select>"; else $o.= "<option value="1">5</option><option value="2">6</option><option value="3">7</option></select>"; ?>
5) вот и все. успехов!
Спустя 23 часа, 9 минут, 51 секунда (25.01.2007 - 09:32) cage написал(а):
ну ладно ...с синтаксисом я переборщил,:P а схема надеюсь работает))))потому ,что собираюсь влить ее!
будем отлаживать
Вопрос xmlhttp.responseText будет понимать html теги,разметка для них одна и та же?
будем отлаживать
Вопрос xmlhttp.responseText будет понимать html теги,разметка для них одна и та же?
Спустя 30 минут, 44 секунды (25.01.2007 - 10:03) loginsan написал(а):
Потестил бы. Я проверял - у меня в IE6, FF и Opera9 работает.
xmlhttp.responseText - это текст который возвращается сервером в результате работы скрипта и нет разницы - простой текст, html или что-то еще.
Естественно желательно чтобы разметка страницы была валидной и тип следующий (это нужно прописывать в начале html):
xmlhttp.responseText - это текст который возвращается сервером в результате работы скрипта и нет разницы - простой текст, html или что-то еще.
Естественно желательно чтобы разметка страницы была валидной и тип следующий (это нужно прописывать в начале html):
Спустя 13 минут, 11 секунд (25.01.2007 - 10:16) cage написал(а):
QUOTE(loginsan)
Потестил бы. Я проверял - у меня в IE6, FF и Opera9 работает.
xmlhttp.responseText - это текст который возвращается сервером в результате работы скрипта и нет разницы - простой текст, html или что-то еще.
Естественно желательно чтобы разметка страницы была валидной и тип следующий (это нужно прописывать в начале html):
xmlhttp.responseText - это текст который возвращается сервером в результате работы скрипта и нет разницы - простой текст, html или что-то еще.
Естественно желательно чтобы разметка страницы была валидной и тип следующий (это нужно прописывать в начале html):
А вот и вопрос
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); идет
а if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); } - не идет
Спустя 13 минут, 13 секунд (25.01.2007 - 10:29) loginsan написал(а):
Когда имеешь дело с Ajax - нужно учитывать все варианты. В данном случае скрипт пытается создать объект XMLHttpRequest в зависимости от браузера пользователя:
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); - это в IE, объект создается как ActiveX элемент
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); } - это в других, тут просто объект на JavaScript
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); - это в IE, объект создается как ActiveX элемент
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); } - это в других, тут просто объект на JavaScript
Спустя 42 минуты, 33 секунды (25.01.2007 - 11:12) cage написал(а):
<!--QuoteBegin-loginsan+--><div class='quotetop'>QUOTE(loginsan)</div><div class='quotemain'><!--QuoteEBegin-->Когда имеешь дело с Ajax - нужно учитывать все варианты. В данном случае скрипт пытается создать объект XMLHttpRequest в зависимости от браузера пользователя:<br>xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); - это в IE, объект создается как ActiveX элемент<br>if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); } - это в других, тут просто объект на JavaScript<!--QuoteEnd--></div><!--QuoteEEnd--><br>Разве код <br>
может я чего-то не догоняю,разве это не код создания объекта после всех проверок браузеров?
P.S.Скрипт не пашет никак, добавил даже стандарты вначале
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); }
может я чего-то не догоняю,разве это не код создания объекта после всех проверок браузеров?
P.S.Скрипт не пашет никак, добавил даже стандарты вначале
Спустя 18 минут, 58 секунд (25.01.2007 - 11:31) loginsan написал(а):
Попробую объяснить:<br>//Создаем булеву переменную чтобы проверить правильный экземпляр Internet Explorer.<br>var xmlhttp = false;<br>//Проверяем - используется ли IE<br>try {<br> //Если версия Javascript старше чем 5.<br> xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");<br> alert ("Вы используете Microsoft Internet Explorer.");<br>} catch (e) {<br> //Если получили исключение (т.е. попытка не удалась), попробуем создать более старый вариант ActiveX объекта<br> try {<br> //Если мы используем Internet Explorer.<br> xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");<br> alert ("Вы используете Microsoft Internet Explorer (версия 2)");<br> } catch (E) {<br> //Если и это не удалось - вывод, что используется не-IE браузер<br> xmlhttp = false;<br> }<br>}<br>//Если ипользуется не-IE браузер, создаем экземпляр javascript объекта<br>if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {<br> xmlhttp = new XMLHttpRequest();<br> alert ("У вас используется браузер отличный от Microsoft Internet Explorer");<br>}<br><br>Текст взят из книги. Есть пример и покороче:<br>
Хотя автор рекомендует придерживаться первого варианта.
Попробуй отладить код. Все исходники взяты из книги (за исключением перевода комментариев и строк вывода). Должно работать.
Какой браузер?
var xmlhttp; //Если, доступен activexobject, должно быть используется IE. if (window.ActiveXObject){ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { //Иначе, можем использовать обработчик Javascript. xmlhttp = new XMLHttpRequest(); }
Хотя автор рекомендует придерживаться первого варианта.
Попробуй отладить код. Все исходники взяты из книги (за исключением перевода комментариев и строк вывода). Должно работать.
Какой браузер?
Спустя 7 минут, 35 секунд (25.01.2007 - 11:38) cage написал(а):
<!--QuoteBegin-loginsan+--><div class='quotetop'>QUOTE(loginsan)</div><div class='quotemain'><!--QuoteEBegin-->Попробую объяснить:<br>//Создаем булеву переменную чтобы проверить правильный экземпляр Internet Explorer.<br>var xmlhttp = false;<br>//Проверяем - используется ли IE<br>try {<br> //Если версия Javascript старше чем 5.<br> xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");<br> alert ("Вы используете Microsoft Internet Explorer.");<br>} catch (e) {<br> //Если получили исключение (т.е. попытка не удалась), попробуем создать более старый вариант ActiveX объекта<br> try {<br> //Если мы используем Internet Explorer.<br> xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");<br> alert ("Вы используете Microsoft Internet Explorer (версия 2)");<br> } catch (E) {<br> //Если и это не удалось - вывод, что используется не-IE браузер<br> xmlhttp = false;<br> }<br>}<br>//Если ипользуется не-IE браузер, создаем экземпляр javascript объекта<br>if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {<br> xmlhttp = new XMLHttpRequest();<br> alert ("У вас используется браузер отличный от Microsoft Internet Explorer");<br>}<br><br>Текст взят из книги. Есть пример и покороче:<br>
Хотя автор рекомендует придерживаться первого варианта.
Попробуй отладить код. Все исходники взяты из книги (за исключением перевода комментариев и строк вывода). Должно работать.
Какой браузер?
var xmlhttp; //Если, доступен activexobject, должно быть используется IE. if (window.ActiveXObject){ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { //Иначе, можем использовать обработчик Javascript. xmlhttp = new XMLHttpRequest(); }
Хотя автор рекомендует придерживаться первого варианта.
Попробуй отладить код. Все исходники взяты из книги (за исключением перевода комментариев и строк вывода). Должно работать.
Какой браузер?
Так я понял конструкцию catch TRY)))но все равно спасибо,я не понимаю ,почему не идет обработка объекта...
ActiveX вроде включены...так отлаживалпо всякому,тем более из книги ,у меня IE6,но пробовал из O9,может я в настройках что-нить пропустил?