Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.08.2015, 00:07
Аспирант
Отправить личное сообщение для IONEX Посмотреть профиль Найти все сообщения от IONEX
 
Регистрация: 08.01.2012
Сообщений: 32

Помогите найди ошибку в форме регистрации
Доброго времени суток. Хочу создать форму регистрации.
1.jpg

Задача такая: при выборе из списка страны без перезагрузки страницы в список должны подгружаться города из БД.
Пытаюсь связать 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 (см. выше) показан на рис. ниже

2.jpg

Но после возврата массива городов ничего не происходит (отладку jquery в ide netbeans настроить не удалось). В чем может быть ошибка и почему не срабатывает даже alert?
Ответить с цитированием
  #2 (permalink)  
Старый 17.08.2015, 04:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Показанный массив не должен содержать в себе приведения к типу (string), и сервер должен возвращать не массив, а json.
Ответить с цитированием
  #3 (permalink)  
Старый 19.08.2015, 20:26
Аспирант
Отправить личное сообщение для IONEX Посмотреть профиль Найти все сообщения от IONEX
 
Регистрация: 08.01.2012
Сообщений: 32

Спасибо за ответ и подсказку. Все получилось.

Файл 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?
Ответить с цитированием
  #4 (permalink)  
Старый 19.08.2015, 20:58
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

IONEX, по правилам хорошего тона data: { country: this.value } а то мало ли)
Ответить с цитированием
  #5 (permalink)  
Старый 20.08.2015, 05:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от IONEX
Есть ли недостатки такой конструкции и нужно ли, так сказать, по правилам хорошего тона переводить в json?
А смысл? В вашем случае, с одним передаваемым параметром, овчинка выделки не стоит. А вот что касается $_REQUEST['country'], вот тут интереснее. Поступая так, нужно хорошо представлять себе что это за массив такой и его поведение.
Ответить с цитированием
  #6 (permalink)  
Старый 20.08.2015, 17:36
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от IONEX
и в php считываю так:

$_REQUEST['country']
Вы на сервер посылаете данные через POST, а считываете через $_REQUEST, зачем? Или вы своим скриптом собираетесь ещё и GET с куками обрабатывать?
Ответить с цитированием
  #7 (permalink)  
Старый 20.08.2015, 18:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sigizmund2012
Или вы своим скриптом собираетесь ещё и GET с куками обрабатывать?
Этого не будет, так как в данном случае, при приеме именно этого запроса в нем будут данные POST запроса, так как даже при наличии одновременно и GET данных, POST данные их перепишут, и это определяется порядком обработки данных определенных в variables_order.

А вот то, что в этот массив могут поступать данные из GET, POST, COOKIE, и которые можно переопределить, вот это плохо, да еще при регистрации.
Ответить с цитированием
  #8 (permalink)  
Старый 20.08.2015, 18:25
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от laimas
Этого не будет, так как в данном случае, при приеме именно этого запроса в нем будут данные POST запроса, так как даже при наличии одновременно и GET данных, POST данные их перепишут, и это определяется порядком обработки данных определенных в variables_order.
Я и не говорил, что там могут быть одновременно и POST и GET данные, просто скрипт с $_REQUEST может быть единым обработчиком для многих форм и ajax запросов. Возможно он так и планирует его использовать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery ajax - помогите найти ошибку malefikus13 Общие вопросы Javascript 9 12.08.2015 13:36
Помогите найти ошибку в вёрстке OlegALL (X)HTML/CSS 1 03.02.2014 11:58
Помогите найти ошибку в простом скрипет Mekasan Общие вопросы Javascript 3 05.08.2013 12:02
onmauseover помогите найти ошибку realgleb Общие вопросы Javascript 2 30.08.2012 11:53
Помогите найти ошибку((( hacker_007 Общие вопросы Javascript 5 28.01.2011 17:37