Получение данных из вложенного массива передало JavaScript / JQuery от PHP / Cakephp через JSON

Извините за задавание основного вопроса как это, но я читал на этом в течение нескольких часов теперь, и примеры не имеют смысла мне в контексте способа, которым мой массив.. Я смог передать это от своей стороны сервера (cakephp) к JavaScript (я использую jQuery), но после этого, я потерян относительно того, как использовать данные.. Я пытался просто показать его с помощью предупреждения, но это дает вывод как "объектный Объект", и это - все..

Это - массив в качестве примера, который я имею:

    Array ( 

    [0] => Array ( [Uiemail] => Array ( [uiemail_id] => 2 [divid] => upd1 [width] => 200 [height] => 200 [leftpos] => 122 [toppos] => 122 [cssgroup] => 1 [colortop] => [colorbottom] => [colorborder] => [borderwidth] => [zindex] => ) ) 

    [1] => Array ( [Uiemail] => Array ( [uiemail_id] => 3 [divid] => upd2 [width] => 200 [height] => 200 [leftpos] => 333 [toppos] => 444 [cssgroup] => 1 [colortop] => [colorbottom] => [colorborder] => [borderwidth] => [zindex] => ) ) 

    [2] => Array ( [Uiemail] => Array ( [uiemail_id] => 4 [divid] => upd3 [width] => 200 [height] => 200 [leftpos] => 555 [toppos] => 466 [cssgroup] => 1 [colortop] => [colorbottom] => [colorborder] => [borderwidth] => [zindex] => ) ) 

) 

Править:

Массив является способом, которым это - как это - вывод от базы данных Cakephp, ДОБИРАЮТСЯ (эквивалент cakephp этого).

Это имеет 3 массива, первое является "родительским массивом" и содержит [1], [2], [3], которые похожи на автоинкрементный идентификатор для 2-х многоярусных антенн.

2-й уровень имеет массив, который содержит 3-е, в эту секунду действительно не содержит данных кроме 3-го массива (ее сделанный как это cakephp начиная с его представления таблицы базы данных)

Так, 3-я многоярусная антенна имеет все данные, в которых я нуждаюсь, однако я также хотел бы использовать первый идентификатор уровня

В PHP К ОТДЕЛЬНОЙ ЧАСТИ ДАННЫХ ИЗ ЭТОГО МАССИВА ПОЛУЧАЮТ ДОСТУП КАК ТАКОВАЯ:

$arrayline = [0]['Uiemail']['toppos'];

Вот некоторый JavaScript, который я попробовал, который не работал (json, имя массива):

    $(json).each(function() {
      alert(this.text)
    });
});

Спасибо за любой совет его просто, что мой массив является вложенным массивом (как его от вызова базы данных) и кажется, что большинство примеров не идет это глубоко, которое ведет меня к беспорядку.

1
задан Rick 24 July 2010 в 17:55
поделиться

4 ответа

Ассоциативный массив в PHP (т.е. со значимыми ключами, такими как ваш 'uiemail_id') станет объектом в нотации JSON. Даже массив, который не является точно 0-индексированным и непрерывным, также станет объектом. (т.е. массив с ключами 0,1,2 будет представлять собой массив, ключи 1,2,3 или 0,2,3 будут представлять собой объект.

Если вы обращаетесь к значению в PHP следующим образом:

$arrayline = $array[0]['Uiemail']['toppos'];

Доступ к результирующей структуре в js будет таким:

arrayline = jsonvar[0].Uiemail.toppos;

Включение firebug в firefox, с точками останова, позволяет вам легко проверить любую переменную, доступную в данный момент, в свое удовольствие, что делает отладку намного проще, чем обычный стандартный PHP способ просто сбросить обозначения переменных в stdout (т.е. printr / var_dump'ы).

1
ответ дан 2 September 2019 в 22:47
поделиться

Я не совсем понимаю вашу нотацию массива ... но я предполагаю, что представление в json / javascript будет следующим:

[
    [[2, 'udp1', 200, 200, 122, ....]],
    [[3, 'udp2', 200, 200, 333, ....]],
    [[4, 'udp3', 200, 200, 555, ....]]
]

Когда вы передаете массив в json, индекс ' имена не передаются.

Если это структура, то может получиться что-то вроде этого:

$.each(json, function(index, element){
    $.each(element, function(index, sub){
      alert(sub);
    });
});
1
ответ дан 2 September 2019 в 22:47
поделиться

Попробуйте следующее:

$.each(json, function(index, element){
  alert(element);
});

если json - это ваш объект javascript , который (надеюсь) уже был проанализирован как json , вы не можете вызвать на нем функцию конструктора jQuery и ожидать, что она будет работать вот так.

Используйте вспомогательную функцию $. Each () для перебора объекта с помощью jQuery.

Если вы все еще получили [объект Object] в качестве предупреждения, это потому, что эти субэлементы являются массивами или реальными объектами сами по себе, так что копать нужно глубже. Хорошим подспорьем являются FireBug и console.dir ()

Ссылка: $. Each ()

1
ответ дан 2 September 2019 в 22:47
поделиться

Для этого необходимо использовать jQuery.each () .

-1
ответ дан 2 September 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: