Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.05.2014, 22:19
Аспирант
Отправить личное сообщение для zazula Посмотреть профиль Найти все сообщения от zazula
 
Регистрация: 07.05.2014
Сообщений: 40

зависимые списки select
Добрый вечер! Пытаюсь сделать зависимые списки select и видимо где-то ошибка. Так как я только разбираюсь в ajax, не могу понять где она. Помогите, пожалуйста. Мне кажется, что ошибка где-то в запросе, т.к. при выборе категории выходит alert "При выполнении запроса произошла ошибка " Но что именно не так с запросом? Заранее благодарю за помощь!
Сам запрос
$tip = $mysqli->query("SELECT *
            FROM  `tip`
            WHERE  `id_kat` =  '".$_POST['kat_id']."'");       
        $arr = array();
        while($row = mysqli_fetch_assoc($tip)){
           $arr[] = array($row['tid'] => $row['tname']);
        }
        return $arr;
    
 
if (!isset($_POST['query']) || !$_POST['query']) {
    exit("Нет данных определяющих тип запроса");
}
else {
    
    $query = trim($_POST['query']); 
    // Определяем тип запроса
    switch($query) {
    case 'getTip':  
        // Формируем массив с ответом
        
        $result = NULL;
        $i = 0;
        foreach ($arr as $tip_id => $tip) {
            $result[$i]['tip_id'] = $tip_id;
            $result[$i]['tip'] = $tip;
            $i++;
        }
        
    break;
    
    default:
        // Если данные не определены
        $result = NULL;
    break;
    }
}

(function () {    
    "use strict"; 
    jQuery(function () {        
        $( '#kat' ).change(function () {            
            $( '#tip').find( 'option:not(:first)' ) 
                .remove()                   
                .end()      
                .prop( 'disabled',true );             
            var kat_id = $( this ).val();            
            if (kat_id == 0) { return; }            
            $.ajax({
                type: "POST",   
                url: "query.php",   
                dataType: "json",   
                data: "query=getTip&kat_id=" + kat_id,  
                error: function () {    
                    alert( "При выполнении запроса произошла ошибка :(" );  
                },
                success: function ( data ) {                    
                    for ( var i = 0; i < data.length; i++ ) {                        
                        $( '#tip' ).append( '<option value="' + data[i].tip_id + '">' + data[i].tip + '</option>' );
                    }
                    $( '#tip' ).prop( 'disabled', false );  
                }
            });
        });
    }); 
})();
Ответить с цитированием
  #2 (permalink)  
Старый 08.05.2014, 06:59
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Данные до сервера доходят? Сервер возвращает корректный JSON? Путь до php скрипта корректно в запросе указан?
Ответить с цитированием
  #3 (permalink)  
Старый 08.05.2014, 07:49
Аспирант
Отправить личное сообщение для zazula Посмотреть профиль Найти все сообщения от zazula
 
Регистрация: 07.05.2014
Сообщений: 40

А как узнать доходят ли данные до сервера?
Путь до PHP скрипта это тот что в параметре "data" указан? Вопросы у меня, наверно, глупые, но я сосем не знакома ни с ajax ни с javascript, только пытаюсь разобраться во всем этом. Поэтому параметр "data" не уверена, что правильно написан. Запрос на PHP проверяла, он работает.
Ответить с цитированием
  #4 (permalink)  
Старый 08.05.2014, 08:00
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от zazula Посмотреть сообщение
А как узнать доходят ли данные до сервера?
Посмотреть на сервере выполняется ли php скрипт при запросе или нет... Как вариант прописать сохранение какой-нибудь файла при запуске скрипта или еще какие-нибудь косвенные операции, которые помогут понять запускался ли скрипт вообще или нет и какие данные ему приходят.

Сообщение от zazula Посмотреть сообщение
Путь до PHP скрипта это тот что в параметре "data" указан?
Это то что указано в url параметре. Там сейчас query.php и это значит, что query.php должен лежать в той же директории, что и страница откуда запускается аякс запрос.

Еще у вас указан dataType: "json", а это значит, что php скрипт должен возвращать данные в формате JSON, если он вернет данные в другом формате, то будет ошибка при попытке распарсить эти данные.

Последний раз редактировалось jsnb, 08.05.2014 в 08:02.
Ответить с цитированием
  #5 (permalink)  
Старый 08.05.2014, 08:18
Аспирант
Отправить личное сообщение для zazula Посмотреть профиль Найти все сообщения от zazula
 
Регистрация: 07.05.2014
Сообщений: 40

query.php есть, в конце файла данные преобразуются в формат json, так что с этим тоже должно быть все в порядке. Попробую проверить, доходят ли данные до сервера
Ответить с цитированием
  #6 (permalink)  
Старый 08.05.2014, 08:39
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

И сделайте вывод ошибки на стороне клиента так:
error: function (xhr, status, error) {    
  alert( status + ' | ' + error );  
}

И скажите что оно у вас там выводит.
Ответить с цитированием
  #7 (permalink)  
Старый 08.05.2014, 08:54
Аспирант
Отправить личное сообщение для zazula Посмотреть профиль Найти все сообщения от zazula
 
Регистрация: 07.05.2014
Сообщений: 40

parsererror | SyntaxError: Unexpected end of input
Я так понимаю, что что-то с запросом PHP не так?
Ответить с цитированием
  #8 (permalink)  
Старый 08.05.2014, 09:02
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от zazula Посмотреть сообщение
parsererror | SyntaxError: Unexpected end of input
Я так понимаю, что что-то с запросом PHP не так?
Данные в некорректном формате с сервера приходят. У вас там точно корректный JSON возвращается?
Ответить с цитированием
  #9 (permalink)  
Старый 08.05.2014, 09:08
Аспирант
Отправить личное сообщение для zazula Посмотреть профиль Найти все сообщения от zazula
 
Регистрация: 07.05.2014
Сообщений: 40

не знаю, еще не проверила. не могу понять, как именно формат проверить
Ответить с цитированием
  #10 (permalink)  
Старый 08.05.2014, 09:12
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от zazula Посмотреть сообщение
не знаю, еще не проверила. не могу понять, как именно формат проверить
Поменяйте свой ajax на такой:
$.ajax({
                type: "POST",   
                url: "query.php",   
                dataType: "text",   
                data: "query=getTip&kat_id=" + kat_id,  
                error: function () {    
                    alert( "При выполнении запроса произошла ошибка :(" );  
                },
                success: function ( data ) {                    
                    alert(data) 
                }
});

И посмотрите что там у вас сервера приходит.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод для конвертирования едениц px, em, %, pt. jegit Элементы интерфейса 0 07.03.2013 16:15
Javascript SELECT - зависимые списки zakbc Events/DOM/Window 3 13.01.2013 00:37
Зависимые списки! DSHA Элементы интерфейса 12 27.06.2012 12:27
Проблема с динамическим формированием select elepsion jQuery 1 31.10.2010 14:31
динамические списки Shaci jQuery 0 14.12.2009 15:03