Не отправляются select загруженные через AJAX

Тема в разделе "JavaScript", создана пользователем avgaz, 12 янв 2013.

Модераторы: ZiX
  1. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Соответственно проблема в следующем, есть форма в которой поля выбора select подгружаются через AJAX с этим все норма работает как нужно, но вот данные которые подгружаются не отправляются из формы. В чем проблема?
    Вот собственно сама форма
    HTML:
    <form action=/index.php method=\"post\">
       
        <table border=0 align=center width=90%>
            <tr><td align=left>Выберите страну* <td align=left>
    <select onchange="city(this.options[this.selectedIndex].value, 'region', 'rezult_region');" name="country" style="width:300px;">
    <option value='null'>- Выберите Страну -</option>
    <option value="219">Россия</option>
    <option value="220">Украина</option>
    <option value="221">Беларусь</option>
    <option value="222">Казахстан</option>
    </select>
    </tr>
    <tr><td align=left>Выберите Регион*
    <td align=left>
    <div id="rezult_region"></div>
    </tr>
    <tr><td align=left>Выберите Город*
    <td align=left>
    <div id="rezult_city"></div>
    </select>
    </tr>
         
    <tr><td align=left colspan=2><input type=submit value=Отправить сообщение></tr></table><td></form>
    То есть отправляется из этой формы только первый select остальные два которые подгружаются в зависимости от выбора не отправляются, хотя после их загрузки в исходном коде страницы они нормальные
    В чем прикол то?
     
  2. Re22

    Re22 Создатель

    Регистр.:
    4 янв 2013
    Сообщения:
    18
    Симпатии:
    4
    Тут форме нет двух других селектов. Вы Сам тег селекта тоже подгружаете или только <option /> ? Покажите что подгружается.
     
  3. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Да select то же подгружается
    PHP:
    if (!empty($result)) {
            echo 
    "<select onchange=\"ajax_city(this.options[this.selectedIndex].value, 'city', 'rezult_city');\" name=\"region\" style=\"width:300px;\">\n";
            while (
    $region $DB->fetch_row($result)) {
                            echo 
    "<option value='" $region['id'] . "'>" $region['region_name_ru'] . "</option>\r\n";
            }
                    echo 
    "</select>";
        }
        else {
            echo 
    "<option value=''>Нет регионов</option>\r\n";
        }
     
  4. Re22

    Re22 Создатель

    Регистр.:
    4 янв 2013
    Сообщения:
    18
    Симпатии:
    4
    Вроде на вид ок. Смотрите что передается - print_r($_REQUEST); Или даже лучше print_vars();
     
  5. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    В том то и проблема что не передается подгруженные select, то есть из изначально в форме только первый select далее подгружаются ещё два и выходит что первый передается нормально который изначально был, два которые подгруженные нет. print_r($_REQUEST);
    так же выводит только что передается sumit_list [country] => 220 ну и дальше там сессии и тд
     
  6. Re22

    Re22 Создатель

    Регистр.:
    4 янв 2013
    Сообщения:
    18
    Симпатии:
    4
  7. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Толком там не чего нет, передавать форму JS то же не хочется.
    Не знаю почему, но вот этот вариант работает нормально, то есть изначально на странице все 3 select два как бы пусты, при подгрузке просто заменяется селект
    HTML:
    <tr><td align=left>Выберите Регион*
    <td align=left><select onchange=\"ajax_city(this.options[this.selectedIndex].value, 'city', 'rezult_city');\" name=\"region\" id=\"rezult_region\" style=\"width:300px;\">
    <option value='null'>- Выберите Регион -</option>
    </select>
    </tr>
     
  8. Re22

    Re22 Создатель

    Регистр.:
    4 янв 2013
    Сообщения:
    18
    Симпатии:
    4
    Уже неплохо :) Только там еще народ упоминал что в разных браузера может по разному работать. Имхо стоит проверить.
     
  9. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Да уж в IE выбор не работает (((
     
  10. ShaDeRzz

    ShaDeRzz

    Регистр.:
    16 окт 2007
    Сообщения:
    176
    Симпатии:
    65
    Всё потому, что подгружая данные вы не перестраиваете DOM дерево, соответственно, и отправлять, с точки зрения JS, нечего...
    Попробуйте задействовать в методе которым вы шлёте ajax-запрос функцию onComplete, в которой обрабатывайте полученный массив данных следующим образом:
    Код:
    var list = $("#selectList"); // selectList это ID вашего элемента, куда вы поместите ваши options
    // items — массив полученных данных вида id => title
    $.each(items, function(index, item) {
      list.append(new Option(item.text, item.value));
    });