| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: X технологии > вывод второго ниспадающего меню в соответствии |
| Автор: anurbol 22.7.2007, 18:11 |
| Я только недавно выучил PHP и скоро заканчиваю сайт. Но вот проблема - мне в одном месте сайта нужно использовать что-то вроде ajax. И у меня нет времени только из-за одной менюшки учить новые языки. Вобщем задача стоит такая - После того как пользователь сделал выбор в ниспадающем меню (например страну), нужно ему предостаить второе меню "города" чтобы города соответствовали стране. На самом деле у меня не город и страну нужно выбрать, а другое, но долго объяснять. Просто, люди добрые покажите несведущему в js как это реализовать на этом примере. |
| Автор: anurbol 23.7.2007, 01:47 |
| если вы когда нибудь регистрировались нa vkontakte.ru то там наверно видели такую фичу. Неужели никто не знает? |
| Автор: Golda 24.7.2007, 06:33 |
| http://www.w3schools.com/ajax/ajax_server.asp - хороший пример js-стороны кода А лучше прочитать весь короткий и несложный тьюториал http://www.w3schools.com/ajax/default.asp |
| Автор: nerezus 24.7.2007, 06:47 | ||
| Качай либу и юзай. Я юзал sajax. P.S.
|
| Автор: anurbol 25.7.2007, 00:55 |
| Сэнкс |
| Автор: anurbol 28.7.2007, 23:48 | ||||
вот сделал менюшку ajax'ом. А теперь другая проблема. в ie все ок. А вот в опере и фф - выпадающее меню не передает значения. то есть само меню нормально показывается и значения для него из базы данных извлекаюься, однако при переходе на следующую страницу переходят все данные, кроме сгенерированных аяксом.
вот пхп
что не так с совместимостью с фф и оперой? |
| Автор: nerezus 28.7.2007, 23:55 | ||
|
| Автор: anurbol 29.7.2007, 03:47 | ||||
А что там не так? Все там правильно. Я же говорю в ie все работает на ура. А вот в опере и файрфоксе нет. Я наверное недостаточно ясно осветил проблему. Итак, есть выпадающее меню(dropdown)"страны"со списком стран. При совершении выбора страны, ajax генерирует второе выпадающее меню "города". Это все сделано, как вы понимаете для того чтобы в США не оказалось Минска, а в Беларуси Вашингтона. Тут проблем нет, все работает во всех браузерах. Но дальше этого в опере и фф дело не идет... form action="1.php" этот скрипт сделан просто для теста и выглядит таким образом:
в ie выводит: RussiaMoscow в опере и firefox: Russia для полной ясности покажу урл в iexplorer:1.php?strany=Russia&goroda=Moscow&submit=Go%21 и урл в opera и firefox:1.php?strany=Russia&submit=Go%21 иными словами значение из меню не передается. пожалуйста, умные люди, покажите как решить проблему? два дня над ней сижу Добавлено через 8 минут и 45 секунд
кстати, а что за sajax? во всех браузерах работает? |
| Автор: nerezus 29.7.2007, 08:10 |
| anurbol, sql-inj у тебя. И справляй более того, возьми за правило писать скрипт так, чтобы он не выдавал варнингов и нотайсов при любых условиях. Будет время - гляну твою страничку. |
| Автор: anurbol 30.7.2007, 16:02 |
| Спасибо за замечание по безопасности |
| Автор: nerezus 30.7.2007, 16:12 |
| sajax работает во всех. Там насколько помню раньше было 2 ошибки - с кириллицей и с пост-запросами, но исправлялись элементарно. Попробуй ее юзать. |
| Автор: Golda 31.7.2007, 07:50 | ||
anurbol, покажите html-код формы. Что собой представляет элемент с id='strany'? Если select - то у него не гарантированно поле value (посмотрите в спецификации на w3.org). Занчение из select нужно доставать конструкцией
Это может быть причиной Вашей проблемы. nerezus, ИМХО sajax неудобен. Он ограничивает Вас в использовании буферизации. Если Вы попытаетесь использовать sajax в проекте, использующем функции из серии ob_start(), ob_end_flush(), сталкнетесь с проблемами |
| Автор: anurbol 31.7.2007, 18:04 | ||
в index.php включен хедер, а в него включен файл js(<script src=ajax.js></script>форма в index.php выглядит следующим образом
выше было все остальное(в js должно быть не function showSubctg(str), а function showStrany, опечатка сейчас уже думаю, лучше бы не было ни оперы ни ff |
| Автор: Golda 1.8.2007, 10:22 |
| anurbol, это все внутри какого-то тега <form>? В action этого <form> не передаются занчения? Я не вижу в Вашем коде <input> или <select> с name='goroda'. Передается только то, что в активных эоементах. Дайте больший кусок кода, от <form> до </form>. P.S. в onchange тожу лучше поставить showCountry(this.options[this.selectedIndex].value |
| Автор: anurbol 3.8.2007, 20:10 |
| Вобщем, долго бившись об клавиатуру головой, я уже отказался от этой затеи |
| Автор: anurbol 3.8.2007, 20:30 | ||||||||
<form action=\"1.php\" method=\"get\">" ._SELECTCOUNTRY."</td> <td align=\"left\"> <select name=\"strany\" id=\"strany\" onchange=\"showStrany(this.options[this.selectedIndex].value)\"> <option>"._SELECTCOUNTRY."</option> <option value=\"armenia\">"._ARMENIA."</option> <option value=\"azerbaijan\">"._AZERBAIJAN."</option> <option value=\"belarus\">"._PEOPLE."</option> <option value=\"georgia\">"._GEORGIA."</option> </select></td></tr> <tr><td>"._SELECTCITY."</td> <td id=\"goroda\"><!--здесь - место для городов--> </td></form>
см. 2 скрипт в 6 посте.
В смысле активных? |
| Автор: Golda 4.8.2007, 16:27 | ||||||
| По поводу <input name="goroda"> Вы правы, не досмотрела. Спасибо, что обратили внимание Все-таки Вы, видимо, не весь код внутри <form> привели. Например, судя по URL, приведенным в одном из предыдущих постов,
у Вас есть еще где-то кнопка submit с текстом Go. Ну да ладно, думаю, того что Вы привели, достаточно. 1. Получается, что <form> находится внутри одного <td>, элементы внутри другого, а закрывающий тег </form> внутри третьего. Броузеры не любят таких издевательств. Открывайте тег <form> до начала всей таблицы, а закрывайте после. 2. В результате, после AJAX-запроса, у Вас появятся <td id="goroda"> и <select name="goroda">. Эти одинаковые имена могут сыграть с Вами злую шутку уже в Internet Explorer, который любит путать name и id. Если эти моменты исправить, код должен заработать. Еще не понимаю, зачем Вам текущее значение strany вычислять 2 раза. Тем более, что параметр goroda, судя по приведенным кускам кода, не только полностью совпадает с strany, но и не используется обработчиком. В общем, вот мой отладочный вариант, который работал во всех 3 интересующих Вас броузерах test.php
goroda.php
|
| Автор: anurbol 6.8.2007, 19:25 |
| |