JS: разбор JSON

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

JS: разбор JSON

Сообщение IMB »

Доброго дня!
Серверная часть, php 5.2.6, возвращает результат в формате JSON использую фукцию json_encode().
Клиентский код:

Код: Выделить всё

$(function() {
    $.ajax({
        url: 'db.php',
        type: 'GET',
        dataType: 'json',
        data: 'get=project&dep=' + $.cookie('otdel'),
        complete: function(data) {
            alert(data[0]) //выдаёт undefined
                       alert(data[0].id) //ничего не выдаёт
        }
    });
});

Возвращаемый сервером результат:

Код: Выделить всё

[{"id":4,"name":"pr1","head":"project","task_ready":0,"task_total":10,"start_date":"01\/01\/2010","end_date":"31\/12\/2010"},
{"id":2,"name":"pr2","head":"project","task_ready":0,"task_total":2,"start_date":"01\/07\/2010","end_date":"31\/08\/2010"},
{"id":3,"name":"pr3","head":"project","task_ready":0,"task_total":0,"start_date":"01\/06\/2010","end_date":"31\/08\/2010"}]

В чём ошибка?
Спасибо.
Спасибо сказали:
Аватара пользователя
nickm
Сообщения: 203
ОС: RFRemix

Re: JS: разбор JSON

Сообщение nickm »

В firebug:

Код: Выделить всё

>>>> s = [{"id":4,"name":"pr1","head":"project","task_ready":0,"task_total":10,"start_date":"01\/01\/2010","end_date":"31\/12\/2010"},
{"id":2,"name":"pr2","head":"project","task_ready":0,"task_total":2,"start_date":"01\/07\/2010","end_date":"31\/08\/2010"},
{"id":3,"name":"pr3","head":"project","task_ready":0,"task_total":0,"start_date":"01\/06\/2010","end_date":"31\/08\/2010"}];

>>>> console.info(s[0]["id"]);

4


что выдаёт?

Код: Выделить всё

   complete: function(data) {
        alert(data); //что выдаёт
        // лучше использовать для отладки в firefox console.info(data);
        }
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: JS: разбор JSON

Сообщение IMB »

Спасибо, то что ответ сервера имеет корректный формат я знаю, проверил здесь http://json.parser.online.fr/
Похоже, что я разобрался в проблеме.

Код: Выделить всё

$(function() {
    $.ajax({
        url: 'db.php',
        type: 'GET',
        dataType: 'json',
        data: 'get=project&dep=' + $.cookie('otdel'),
        complete: function(data, status) {
            alert(data.responseText) //выдаёт весь ответ
            var d = jQuery.parseJSON(data.responseText);
            alert(d[0].name) //выдаёт корректные данные
        }
    });
});
Спасибо сказали: