| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > работа с динамическими select |
| Автор: smoke888 7.6.2008, 14:25 |
| Здравствуйте уважаемые участники форума! Пишу здесь, поскольку не получается самостоятельно справиться вроде бы с простой задачей. сначала несколько слов о задаче: Работаю я на предприятии, которое имеет несколько подразделений по области. Каждое подразделение отвечает за некоторые объекты в определенных районах этой области. Естественно районы имеют множество населенных пунктов. Руководство поставило задачу собрать по локальной сети кое-какие данные с подразделений. Решили использовать для этого web технологии. В частности php+mysql+javascript. В принципе задача простая и была реализована. Однако имеются шероховатости, причем существенные, которые хотелось бы устранить. Для ввода данных подразделениями я сделал, естественно, web форму. В нее входят несколько полей, меня интересует сейчас только 3: Наименование подразделения: --список подразделений-- Район: --список районов-- Населенный пункт: -- список населенных пунктов-- Из справочной таблицы mysql я, при открытии формы, формирую начальные данные этих select'ов. Т.е. в список районов запихиваю все районы, которые существуют в области. В список НП запихиваю все населеные пункты всех районов. Таким образом, если человек легко выберет свое подразделение и район (их не так и много), то вот искать определенный населенный пункт он уже "запариться". Поэтому я решил попробовать облегчить задачу людям. Из серфа по инету выискал, что есть такая чудесная технология AJAX, которая может мне помочь. Нашел библиотеку JShttpRequest и с ее помощью сваял кое-чего. Получилось при выборе подразделения подгружать во второй селект только нужные районы. Но что-то я не пойму, почему когда просматриваешь код html страницы содержимое select районов прежнее. Хотя на экране select содержит только нужные мне сведения. select я обновляю с помощью выделения его блоками <div id=район></div>. в JS написал следующее: <script src="JsHttpRequest.js"></script> <script type="text/javascript" language="JavaScript"> function autopodbor(name) { // Create new JsHttpRequest object. var req = new JsHttpRequest(); // Code automatically called on load finishing. req.onreadystatechange = function() { if (req.readyState == 4) { // Write result to page element (_RESULT become responseJS). document.getElementById('район').innerHTML = req.responseJS.row; } } // Prepare request object (automatically choose GET or POST). req.open(null, 'auto_select_backend.php', true); // Send data to backend. req.send({data: document.getElementById(name).value, element: name}); } </script> в команде req.send я отпраляю в 'auto_select_backend.php' данные выборе пользователя, а именно: document.getElementById(name).value - выбранное подразделение, element: name - собственно имя того selecta в котором пользователь и выбрал. После того как юзер делает change select'а код срабатывает и на месте поля <div id=район></div> появляется нужный мне select. Кстати из backend'а прилетает строка типа: "<select ....><option>....</option><option>....</option>.............</select>". Эту строку я вставляю в DIV и на экране обновленный select (с новыми данными). Только вот не пойму одного, как с ним дальше работать?? Мне ведь нужно с него считать value. А Где имя ему давать? Фактически в коде html страницы он не показан никак после обновления...... |
| Автор: VSergeyV 7.6.2008, 14:53 |
| а при чем тут формум по Java от Sun Microsystems, Inc. |
| Автор: smoke888 7.6.2008, 15:21 | ||
Ого.. неожиданный вопрос на вопрос.. |
| Автор: fixxer 7.6.2008, 15:48 |
| Вопрос вполне правомерный Java и JavaScript имеют мало общего. |
| Автор: Ghirik 7.6.2008, 16:41 | ||||
Поставьте на время отладки на страницу кнопочку.
|
| Автор: smoke888 7.6.2008, 16:56 | ||||||
Хм.. согласен.. alert выдал именно данные нового селекта с новыми его параметрами типа value и name. Т.е. фактически он поменялся. Только почему это никак не отображается в коде html страницы? Сказывается привычка работать с php. |
| Автор: Ghirik 7.6.2008, 17:01 | ||
В Mozilla даже меню называется не "просмотр HTML", а "Исходный код страницы". |
| Автор: smoke888 7.6.2008, 17:05 |
| Спасибо за ответы. Пока иду ровно. Если какие вопросы появяться, обращусь к вам за помощью. Тему пока не закрывайте... |
| Автор: smoke888 8.6.2008, 12:44 |
| Все задача решена. Тему можно закрывать. Ну и конечно памятник разработчикам AJAX!!! Великая штука!! |