Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка json (https://javascript.ru/forum/misc/56643-obrabotka-json.html)

Dark19 26.06.2015 15:23

Цитата:

Сообщение от tsigel (Сообщение 376689)
Dark19,
может вы забыли распарсить?
JSON.parse(msg)['C'][1];


Читайте $.ajax dataType: 'json'

я не распарсивал, я з ajax-ом ранее дела не имел. Сейчас попробую

рони 26.06.2015 15:40

Цитата:

Сообщение от tsigel
может вы забыли распарсить?
JSON.parse(msg)['C'][1];

зачем парсить и почему 1?

tsigel 26.06.2015 15:43

рони,
ну если консоль все выводит верно, и у msg нет свойств и ключей к которым мы обращаемся, то либо автор что-то напутал, либо msg - строка, нет?

1 потому что C[0] - это 'path', а нужен 'point'

рони 26.06.2015 15:45

:-?
$.ajax({
    dataType: "json",
    type: "POST",
    url: "http://geotest/ajax.php",
    data: {
        centerDist: centerDistance,
        pointDist: pointsDistance
    },
    success: function(msg) {
        console.log(msg);


        Object.keys(msg).forEach(function(key) {
            console.log(msg[key][0]["point"])
        });

    }
});

tsigel 26.06.2015 15:46

рони,
dataType: "json", - у автора не указан.

рони 26.06.2015 15:55

Цитата:

Сообщение от tsigel
dataType: "json", - у автора не указан.

это необязательный параметр - главное чтоб сервер отдавал строку json, а не обьект

Dark19 26.06.2015 16:42

рони,
сделал
msg = JSON.parse(msg);
начало выводить массивы с точками
только не могу понять почему тут data[key][0]["point"] стоит 0 - это подразумевается буква (A,B,C...), типа первый элемент массива? Как можно вывести не массивами, а каждую точку отдельно?

рони 26.06.2015 16:50

Dark19,
data[key] == data["A"] условно -- далее смотрите согласно вашей структуре

nerv_ 26.06.2015 17:05

Цитата:

Сообщение от tsigel
dataType: "json", - у автора не указан.

а еще у него неоднородная структура json =)

Dark19 27.06.2015 11:18

Цитата:

Сообщение от рони (Сообщение 376719)
Dark19,
data[key] == data["A"] условно -- далее смотрите согласно вашей структуре

Перебираю точки вот так:
Object.keys(data).forEach(function (key) {
                                                                            var p = 0, x = 0;
                                                                            for(p=0;p<data[key].length;p++){
                                                                                console.log(data[key][p]['point']);
                                                                                for(x;x<data[key][p]['point'].length;x++){
                                                                                    console.log(data[key][p]['point'][x]);
                                                                                }
                                                                            }
                                                                        });

выводит нормально, но вот там где в массиве только один элемент не выводит ничего. Что не так делаю?


Часовой пояс GMT +3, время: 07:43.