Помогите найди ошибку в форме регистрации
Вложений: 2
Доброго времени суток. Хочу создать форму регистрации.
Вложение 2805 Задача такая: при выборе из списка страны без перезагрузки страницы в список должны подгружаться города из БД. Пытаюсь связать PHP + SQL + JQUERY Код JQUERY, который реагирует на выбор страны в списке $('.country').change(function(){ $.ajax({ type: "POST", url: "get_city_db.php", data: "country="+$(this).val(), success: function(data){ $.each(data, function(i,val) { alert(val); $('#cities').append("<option value='"+val+"'>"); }); } }); }); Собственно PHP файл ("get_city_db.php"), который будет вызван после выбора страны. <?php require_once('/classes/db_connect.class.php'); $db = new database(); $db->dbConnect();//Установка соединения с БД $resault = $db->selectRowWhere('id_country','countries','country_name','=',$_REQUEST['country'],'char'); $row = mysql_fetch_assoc($db->dataSet); $resault = $db->selectWhere('cities','id_country','=',$row['id_country'],'int'); $rowSet = array(); while($row = mysql_fetch_assoc($db->dataSet)){ $rowSet[] = $row['city_name']; } echo $rowSet; ?> Результат который возвращает get_city_db.php (см. выше) показан на рис. ниже Вложение 2806 Но после возврата массива городов ничего не происходит (отладку jquery в ide netbeans настроить не удалось). В чем может быть ошибка и почему не срабатывает даже alert? |
Показанный массив не должен содержать в себе приведения к типу (string), и сервер должен возвращать не массив, а json.
|
Спасибо за ответ и подсказку. Все получилось.
Файл jquery: $(document).ready(function () { $('.country').change(function(){ $.ajax({ type: "POST", url: "get_city_db.php", data: "country="+$(this).val(), success: function(data){ var cities = jQuery.parseJSON(data); alert('ура '+cities); $.each(cities, function(i,val) { alert('ура '+ i); $('#cities').append("<option value='"+val+"'>"); }); } }); }); Файл PHP: <?php require_once('/classes/db_connect.class.php'); $db = new database(); $db->dbConnect();//Установка соединения с БД $resault = $db->selectRowWhere('id_country','countries','country_name','=',$_REQUEST['country'],'char'); $row = mysql_fetch_assoc($db->dataSet); $resault = $db->selectWhere('cities','id_country','=',$row['id_country'],'int'); $rowSet = array(); while($row = mysql_fetch_assoc($db->dataSet)){ $rowSet[] = $row['city_name']; } echo json_encode($rowSet); ?> Еще один небольшой вопрос: из jquery передаю в php данные так: data: "country="+$(this).val() и в php считываю так: $_REQUEST['country'] Есть ли недостатки такой конструкции и нужно ли, так сказать, по правилам хорошего тона переводить в json? |
IONEX, по правилам хорошего тона data: { country: this.value } а то мало ли)
|
Цитата:
|
Цитата:
|
Цитата:
А вот то, что в этот массив могут поступать данные из GET, POST, COOKIE, и которые можно переопределить, вот это плохо, да еще при регистрации. |
Цитата:
|
Часовой пояс GMT +3, время: 02:25. |