Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.02.2016, 18:35
Новичок на форуме
Отправить личное сообщение для alexBBB Посмотреть профиль Найти все сообщения от alexBBB
 
Регистрация: 07.02.2016
Сообщений: 6

Вывод данных из БД посредством Ajax
Здравствуйте.
Разбираюсь с Ajax. На странице есть несколько селектов:
<select>
<option>Выбрать товар</option>
<option data-id="1">...</option>
<option data-id="2">...</option>
<option data-id="3">...</option>
<option data-id="4">...</option>
</select>
<select>
</select>

При выборе товара в первом селекте, с помощью js ловлю data-id и аджаксом передаю на сервер к файлу с запросом в бд.
$(document).ready(function(){
    $('#prec_name').change(function(){
        var dataId = this.options[this.selectedIndex].dataset.id;
        if(!parseInt(dataId)){
            return false;
        }else{
            if(/[^[0-9]+/.test(dataId)){
                return false;
            }
        }
        $.ajax({
            type: 'POST',
            url: 'ajax/getSize/getSize.php',
            datatype: 'json',
            data: "param=" + dataId,
            success: function (data) {
                console.log(data);
            }
        });
    });
});

Запрос делается и приходят данные в виде ассоциативного массива.
к массиву применяю json_encode(array) и передаю обратно с помощью echo.
Дальше начинаются проблемы... вывожу в консоль данные пришедшие с сервера, и получаю это:
[{"sixteen":"1","seventeen":"1","eighteen":"0","nineteen":"1","twenty":"1"}]

при таком выводе
console.log(data.sixteen)

так тоже undefined
console.log(data['sixteen']);

В чем проблема? Как правильно обработать эти данные?
Ответить с цитированием
  #2 (permalink)  
Старый 07.02.2016, 18:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,148

alexBBB,
data[0].sixteen
Ответить с цитированием
  #3 (permalink)  
Старый 07.02.2016, 18:49
Новичок на форуме
Отправить личное сообщение для alexBBB Посмотреть профиль Найти все сообщения от alexBBB
 
Регистрация: 07.02.2016
Сообщений: 6

рони,
Все равно undefined.

А сами данные приходят правильно? Или есть возможность вывести просто вот так:
{"sixteen":"1","seventeen":"1","eighteen":"0","nineteen":"1","twenty":"1"}


если пишу data[0] выводит: " [ "

console.log(typeof(data));


выводит string

Последний раз редактировалось alexBBB, 07.02.2016 в 18:58.
Ответить с цитированием
  #4 (permalink)  
Старый 07.02.2016, 19:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,148

alexBBB,
кто знает кроме вас что вы получаите строку, массив, или обьект.
Сообщение от alexBBB
data[0] выводит: " [ "
тогда у вас строка которая почемуто не превращена в обьект -- что jquery делает самостоятельно получая строку json - самое вероятное сервер отдаёт неправильный формат данных и вам нужно самостоятельно парсить или настраивать сервер
data = JSON.parse(data);
alert(data[0].sixteen)
Ответить с цитированием
  #5 (permalink)  
Старый 07.02.2016, 19:17
Новичок на форуме
Отправить личное сообщение для alexBBB Посмотреть профиль Найти все сообщения от alexBBB
 
Регистрация: 07.02.2016
Сообщений: 6

рони,
Все я понял в чем проблема.
Моя ошибка заключалась в том, что я делал запрос так как обычно в php
то-есть так
$query = "SELECT * FROM `catalog` WHERE catalog_new  = '1'";
    $res = db::getInstance()->query($query);
    $array= array();
    while($row = mysqli_fetch_assoc($res)){
        $news[] = $row;
    }

после чего делал так: echo json_encode($array);

сейчас изменил вывод на вот такой:
$query = "SELECT * FROM `catalog` WHERE catalog_new  = '1'";
    $res = db::getInstance()->query($query);
    $row = mysqli_fetch_assoc($res)
    echo json_encode($row)


console.log(data)

выводит теперь так: {"sixteen":"1","seventeen":"1","eighteen":"1","nin eteen":"1","twenty":"1"}

после чего как вы и сказали я пропарсил этот вывод
data = JSON.parse(data)
console.log(data.sixteen);

и получил необходимые данные. Спасибо, благодарю за помощь. Без data = JSON.parse(data) все равно выводит строку.
Ответить с цитированием
  #6 (permalink)  
Старый 07.02.2016, 19:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,148

Сообщение от alexBBB
Без data = JSON.parse(data) все равно выводит строку.
значит сервер не настроен правильно.
Ответить с цитированием
  #7 (permalink)  
Старый 07.02.2016, 19:25
Новичок на форуме
Отправить личное сообщение для alexBBB Посмотреть профиль Найти все сообщения от alexBBB
 
Регистрация: 07.02.2016
Сообщений: 6

рони,
Работаю на локалке через Денвер, что именно необходимо настроить?
Ответить с цитированием
  #8 (permalink)  
Старый 07.02.2016, 19:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,148

alexBBB,
Сообщение от alexBBB
что именно необходимо настроить?
рекомендую обратится к http://javascript.ru/forum/members/39891-laimas/ или кто знает php
Ответить с цитированием
  #9 (permalink)  
Старый 07.02.2016, 19:38
Новичок на форуме
Отправить личное сообщение для alexBBB Посмотреть профиль Найти все сообщения от alexBBB
 
Регистрация: 07.02.2016
Сообщений: 6

рони,
Благодарю
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка данных формы. Как выглядит структура метода с AJAX (по JQuery)? Coriolan161 AJAX и COMET 5 24.11.2015 20:17
AJAX меняет символы при отправке данных fenix_63 AJAX и COMET 6 17.11.2015 14:20
AJAX, Только передача данных. NewJSUser AJAX и COMET 14 12.01.2015 17:38
Вывод данных массива через AJAX Вячеслав Павлик AJAX и COMET 1 22.11.2014 09:52
Вывод данных в Друпал 6 из MySQL, небольшая работа torquemada Работа 1 22.05.2011 17:05