За последние 24 часа нас посетили 17194 программиста и 1693 робота. Сейчас ищут 1028 программистов ...

JSON encode из php в Javascript

Тема в разделе "JavaScript и AJAX", создана пользователем Dragomaster, 26 авг 2014.

  1. Dragomaster

    Dragomaster Активный пользователь

    С нами с:
    2 июн 2012
    Сообщения:
    26
    Симпатии:
    0
    Всем привет! Помогите разобраться, почему javascript считает все значения массивов внутри другого массива как undefined? т.е. при использовании этой функции:
    Код (Text):
    1. for (var prop in obj[6]) {
    2.   console.log("o." + prop + " = " + obj[6][prop]);
    3. }
    выводит типа этого:
    Код (Text):
    1.  id => undefined,
    2. parent_id => undefined
    Куда копать? Вот то что получается при json_encode()
    Код (Text):
    1. {"6":{"id":"6","parent_id":null,"code":"height","status":"public","name":"\u0420\u043e\u0441\u0442\u043e\u0432\u043a\u0430","type":"varchar","selectable":"1","multiple":"1","count":"5","sort":3,"values":{"37":"164-170","38":"170-176","39":"176-182"},"selected":0},"3":{"id":"3","parent_id":null,"code":"size","status":"public","name":"\u0420\u0430\u0437\u043c\u0435\u0440","type":"varchar","selectable":"1","multiple":"1","count":"13","sort":4,"values":{"2":"39","4":"41","5":"42"},"selected":0}}
     
  2. Dragomaster

    Dragomaster Активный пользователь

    С нами с:
    2 июн 2012
    Сообщения:
    26
    Симпатии:
    0
    Люди! Аууу! Помогите! Я уже голову сломал, пытаясь выяснить почему js выдает null после применения функции jquery.parsejson(), при этом переданные данные успешно прошли тест на валидность. Вот код:
    Код (Text):
    1. var fs = jQuery.parseJSON(<?php json_encode($fs) ?>);
    2. for (var prop in fs) {
    3.     console.log("o." + prop + " = " + fs.prop);
    4. }
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну вообще-то ты можешь просто приравнять, если я не ошибаюсь. Во-вторых json_encode() возвращает строку, её надо выводить. Ты что, не заглядывал в исходный код?

    Код (Text):
    1. var fs = <?php echo json_encode($fs);?>;
     
  4. xeax

    xeax Новичок

    С нами с:
    27 авг 2014
    Сообщения:
    1
    Симпатии:
    0
    Dragomaster, просто у вас вместо fs.prop надо писать fs[prop], ну и далее как-то выводить внутренности, например, вот тут функция dump в примере есть, под вашу проблему.

    Код (Text):
    1. <html>
    2. <head>
    3. <title>Test Javascript</title>
    4. <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    5. </head>
    6. <body>
    7. Test javascript!
    8.  
    9. <script language="Javascript">
    10.  
    11. function dump(obj) {
    12.     var out = "";
    13.     if(obj && typeof(obj) == "object"){
    14.         for (var i in obj) {
    15.             out += i + ": " + obj[i] + "\n";
    16.         }
    17.     } else {
    18.         out = obj;
    19.     }
    20.     return out;
    21. }
    22.  
    23. var fs = jQuery.parseJSON('{"6":{"id":"6","parent_id":null,"code":"height","status":"public","name":"\u0420\u043e\u0441\u0442\u043e\u0432\u043a\u0430","type":"varchar","selectable":"1","multiple":"1","count":"5","sort":3,"values":{"37":"164-170","38":"170-176","39":"176-182"},"selected":0},"3":{"id":"3","parent_id":null,"code":"size","status":"public","name":"\u0420\u0430\u0437\u043c\u0435\u0440","type":"varchar","selectable":"1","multiple":"1","count":"13","sort":4,"values":{"2":"39","4":"41","5":"42"},"selected":0}}');
    24. for (var prop in fs) {
    25.     console.log("o." + prop + " = " + dump(fs[prop]));
    26. }
    27.  
    28. </script>
    29.  
    30. </body>
    31. </html>
     
  5. Dragomaster

    Dragomaster Активный пользователь

    С нами с:
    2 июн 2012
    Сообщения:
    26
    Симпатии:
    0
    xeax, Спасибо, помогло. =)