| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > По событию onchange отправить данные на сервер |
| Автор: Marlik 29.9.2013, 20:24 | ||||
Доброго времени суток. Есть форма регистрации, выводится с помощью шаблонов скриптом на Perl. Отправка данных осуществляется обычным GET запросом. Есть такая задача вставить туда пару полей, а именно поле для вывода страны проживания, и поле в которое потом нужно из базы подгрузить города. Я так понимаю нужно по событию OnChange(); передать параметр id страны в javascript, оттуда сделать запрос на сервер и получив ответ разместить его во втором поле города.
Вопрос, правильно-ли делаю? Есть ли готовые образцы реализации? В javascript не силен, буду признателен за любую помощь. Спасибо. |
| Автор: akizelokro 30.9.2013, 22:42 |
| ajax-запросы посмотри И готовые образцы где-то должны быть |
| Автор: Marlik 30.9.2013, 22:57 |
| Да я так в принципе и думал. В ajax и javascript не бум-бум... Кто-бы поделился реализацией... спасибо. |
| Автор: RBW 1.10.2013, 07:58 | ||||
| 1. Подключаешь jQuery 2. HTML:
3. JS:
Вот тут http://jsfiddle.net/m9Ut5/ полу-живой пример |
| Автор: Marlik 1.10.2013, 13:10 |
| Вот спасибо! Я в принципе нашел какой-то левый скрипт, из него значения value не передаются, только имя селекта. Щас буду тестировать... |
| Автор: Marlik 2.10.2013, 10:21 | ||
Не, не работает. ))) В общих чертах, либо cgi-скрипт мой не отгружает, или jquery косячит. Как проверить? Вот до этой строки мой скрипт работает 100%.
|
| Автор: Marlik 2.10.2013, 14:57 |
| Может alert где воткнуть? Что-бы проверить? А jquery какую версию подключить??? |
| Автор: Marlik 3.10.2013, 07:42 |
| Фуууу... кажись вернулся JSON в jquery... не выводит правда но уже легче.... У меня кривая кодировка в базе и соответственно отдаются вопросики вместо данных... может поэтому парсер ругается? |
| Автор: Marlik 3.10.2013, 08:48 | ||
| Кажется нашел в чем косяк. JSON возвращает id области и имя области. Вот так я получил объект:
Теперь бы выдернуть из него данные и вывести их. Люди, кто соображает выручайте! ))) |
| Автор: Marlik 3.10.2013, 13:30 | ||||||
Хрень какая-то! Вот так пробую получаю вывод во второй селект:
А вот так:
Ничего не получаю во втором селекте. Народ, подскажите куда копать-то? Как будто все вымерли.... ))) |
| Автор: Marlik 3.10.2013, 14:22 |
| За ссылочку спасибо. Криз какой-то по ключевым словам - "как распарсить json" А что, разве нужно писать 50 строк кода чтобы распарсить json? Мне осталось-то до победного конца чуть-чуть.... )))) В вашем куске кода, я нифига не понял... ))) Мы и друг друга не поняли наверное... ))) У гугля наверное истерика уже, когда я набираю... Мне бы пример нормальный, что-бы понятно откеда плясать.... Но все-равно спасибо. |
| Автор: kin 3.10.2013, 15:49 | ||||||||
К сожалению, я не знаю в какой форме у Вас приходит ответ от сервера..., в любом случае - это строка, а далее - куча вариантов, например: получить массив с названием городов при помощи JSON.parse, или функции split("разделитель") объекта String , или резать строку, каким-либо другим способом... После того, как получили список городов, для каждого города, создаем объект OPTION,
устанавливаются его свойства:
и добавляем его в коллекцию
и соответственно, это все крутится в цикле. Как пример:
|
| Автор: Marlik 3.10.2013, 16:13 | ||
Данные приходят в json формате. Вижу в отладчике. Образец:
Вопросики, я так понимаю кривая кодировка, и наверное не влияет на вывод(я так думаю). А вот во втором селекте, на странице вылазиет такая хрень: [object:Object] И что это такое я не врублюсь. Тем более первый раз в жизни мне пришлось столкнутся с javascript-ами... Куда рыть я еще не понял что читать тоже.... |
| Автор: kin 3.10.2013, 16:34 | ||||||
замените на
После этого в отладчике посмотрите содержимое объекта response Скорее всего это будет асоциативный массив вида [ключ:значение]. В данном примере 34 это ключ, а ????? - значение, а все вместе это объект, браузер это и показывает. |
| Автор: Marlik 3.10.2013, 16:49 | ||||||||||
Ну так он что так, что так - ассоциативный массив. Только без stringify во второй селект ничего не попадает... и дальше попробовать ваш код воткнуть? Я уже нагуглился так что тошно... и допер что это обьект, только проблема в том что из обьекта дергать в теории можно, а в моем случае никак... ))) Например:
А как мне выдернуть из обьекта ключ и содержимое? Вопрос еще тот... |
| Автор: kin 3.10.2013, 19:29 | ||||
| Во-первых, что приходит с сервера? Если я правильно понял, то это данные в ФОРМАТЕ JSON. А теперь попробуйте мне объяснить с какого перепуга, Вы решили, что нужно использовать метод JSON.stringify, в описании которого говорится, что он преобразовывает («сериализует») значение в JSON-строку. Во-вторых:
Смысл кода, думаю, понятен без комментариев..., добавьте в цикл код, котрый создает объекты OPTION и получите то, что Вам нужно... |
| Автор: Marlik 4.10.2013, 08:26 | ||||||
К сожалению ваша конструкция не работает, то есть просто ничего не происходит. Я кстати просто ради экспериента вставил JSON.stringify подумал что вдруг данные все-таки не в json формате приходят, и с такой строкой кстати хоть что-то появлялось в селекткте. Получается наверное так, я получаю объект, в котором неизвестны ни ключ, ни значение. Вот сейчас как у меня все выглядит:
Интересно... почему в этой строке синтаксическую ошибку выдает:
Uncaught SyntaxError: Unexpected token o reg.html:34 (anonymous function) |
| Автор: Marlik 4.10.2013, 11:39 | ||||||||
Убрал эту строку и все заработало:
Сделал так(Не знаю правильно-ли?):
И все заработало! Окончательный скрипт выглядит так:
Вот cgi скрипт написан на perl, вдруг кому надо:
Спасибо kin, за поддержку. |
| Автор: Marlik 4.10.2013, 16:57 | ||||
| Нифига не работает правильно... вместо ключа вставляет слово key Вот тут.
Как вставить ключ? Хэлп!!! И по моему криво написано, получается внутри цикла запустил еще один. Переписал так:
|
| Автор: Marlik 6.10.2013, 15:43 | ||
Вопрос решен, переделал так и заработало:
Всем кто помогал, спасибо. |