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

avgaz

Участник
Регистрация
18 Окт 2006
Сообщения
189
Реакции
7
Соответственно проблема в следующем, есть форма в которой поля выбора 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 остальные два которые подгружаются в зависимости от выбора не отправляются, хотя после их загрузки в исходном коде страницы они нормальные
В чем прикол то?
 
Тут форме нет двух других селектов. Вы Сам тег селекта тоже подгружаете или только <option /> ? Покажите что подгружается.
 
Тут форме нет двух других селектов. Вы Сам тег селекта тоже подгружаете или только <option /> ? Покажите что подгружается.
Да 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";
    }
 
Вроде на вид ок. Смотрите что передается - print_r($_REQUEST); Или даже лучше print_vars();
 
В том то и проблема что не передается подгруженные select, то есть из изначально в форме только первый select далее подгружаются ещё два и выходит что первый передается нормально который изначально был, два которые подгруженные нет. print_r($_REQUEST);
так же выводит только что передается sumit_list [country] => 220 ну и дальше там сессии и тд
 
Да интересная проблемка и оказывается распростаненная. Думается мне нужно передавать форму java-скриптом.

Вот обсуждение проблемы: Для просмотра ссылки Войди или Зарегистрируйся
А вот здесь и решение вроде есть - Для просмотра ссылки Войди или Зарегистрируйся
 
Да интересная проблемка и оказывается распростаненная. Думается мне нужно передавать форму java-скриптом.

Вот обсуждение проблемы: Для просмотра ссылки Войди или Зарегистрируйся
А вот здесь и решение вроде есть - Для просмотра ссылки Войди или Зарегистрируйся
Толком там не чего нет, передавать форму 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>
 
Уже неплохо :) Только там еще народ упоминал что в разных браузера может по разному работать. Имхо стоит проверить.
 
Всё потому, что подгружая данные вы не перестраиваете 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));
});
 
Назад
Сверху