За последние 24 часа нас посетили 52815 программистов и 1768 роботов. Сейчас ищут 1020 программистов ...

Как корректно достать ассоциавн. массив с помощью JS из КУКА

Тема в разделе "PHP для новичков", создана пользователем Greg_greg_dp, 28 ноя 2015.

  1. Greg_greg_dp

    Greg_greg_dp Новичок

    С нами с:
    27 ноя 2015
    Сообщения:
    15
    Симпатии:
    0
    Доброго времени суток товарищи ;)
    Вот понадобилось достать сформированный в PHP ассоциативный массив помещенный в кук в json_encode адекватно(корректно) вывести html!

    Прилагаю скрипт:
    Код (PHP):
    1.  <?php
    2.             if(isset($_COOKIE['orders'])){
    3.                 $orders=  unserialize($_COOKIE['orders']);
    4.                 #$orders=  unserialize($_COOKIE['orders']);
    5.                 $json=json_encode($orders);
    6.                 setcookie('JSON',$json) ;
    7.                 
    8.             }  else {
    9.                 $orders=array();
    10.             }
    11.             if (isset($_POST['name']) && isset($_POST['count']) && isset($_POST['delivery']) && isset($_POST['payment'])) {
    12.                 $name = $_POST['name'];
    13.                 $count = $_POST['count'];
    14.                 $delivery = $_POST['delivery'];
    15.                 $payment = $_POST['payment'];
    16.                 $orders_new = array();
    17.                 $orders_new['name'] = $name;
    18.                 $orders_new['count'] = $count;
    19.                 $orders_new['delivery'] = $delivery;
    20.                 $orders_new['payment'] = $payment;
    21.                 array_push($orders,$orders_new);
    22.             }
    23.             var_dump($orders);
    24.             if( setcookie('orders',  serialize($orders)) ){
    25.                 echo 'cookies is set';
    26.             }  else {
    27.                 echo 'Doh';
    28.             }
    29.         ?> 
    и js

    Код (PHP):
    1. function getCookie(name) {
    2.   var cookie = " " + document.cookie;
    3.   var search = " " + name + "=";
    4.   var setStr = null;
    5.   var offset = 0;
    6.   var end = 0;
    7.   if (cookie.length > 0) {
    8.     offset = cookie.indexOf(search);
    9.     if (offset != -1) {
    10.       offset += search.length;
    11.       end = cookie.indexOf(";", offset)
    12.       if (end == -1) {
    13.         end = cookie.length;
    14.       }
    15.       setStr = unescape(cookie.substring(offset, end));
    16.     }
    17.   }
    18.   return(setStr);
    19. }
    20.  
    21.  
    22. document.write(getCookie('JSON'));
    23.  
    в итоге на данный момент вместо красивого массивчика имеем :
    [{"name":"Greg","count":"12","delivery":"Courier+service","payment":"Online+by+card+Visa\/Mastercard"},{"name":"Greg","count":"12","delivery":"Courier+service","payment":"Online+by+card+Visa\/Mastercard"}]

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    А чем вам не нравится красивый массивчик, что вы красным привели? В JS ассоциативных массивов нет, как таковых, они там объекты по сути. JS такой JS
     
  3. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    всё ок. джейсон это строка определенного формата. чтоб это стало объектом - надо декодировать.
     
  4. Greg_greg_dp

    Greg_greg_dp Новичок

    С нами с:
    27 ноя 2015
    Сообщения:
    15
    Симпатии:
    0
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    Просто мне нужно вот эти 4 значения из массива полученного записать в таблицу, ну и в ячейке "Имя" надпись типа "name":"Greg" будет не комельфо, как можно отфильтровать или почистить от лишных символов?
     
  5. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    ну так декодируй и делай дальше что хочешь
     
  6. Greg_greg_dp

    Greg_greg_dp Новичок

    С нами с:
    27 ноя 2015
    Сообщения:
    15
    Симпатии:
    0
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    в php декодировать или в js?

    Добавлено спустя 2 минуты 32 секунды:
    Re: Как корректно достать ассоциавн. массив с помощью JS из КУКА
    document.write(JSON.parse(getCookie('JSON'))); === [object Object],[object Object],[object Object] 0_o

    document.write(JSON.stringify(getCookie('JSON'))); === \"|:"[{\"name\":\"Greg\",\"count\":\"12\",\"delivery\":\"Courier+service\",\"payment\":\"Online+by+card+Visa\\/Mastercard\"},{\"name\":\"Greg\",\"count\":\"12\",\"delivery\":\"By+Mail\",\"payment\":\"Online+by+card+Visa\\/Mastercard\"}]"
     
  7. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    уууууу................................. перечитай название топика, дундук. о каком япе ты там упомянул? или ты списал у соседа?
     
  8. Greg_greg_dp

    Greg_greg_dp Новичок

    С нами с:
    27 ноя 2015
    Сообщения:
    15
    Симпатии:
    0
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    Ты по умничать заходишь сюда?)
    Можно адекватно помочь?
     
  9. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    ну умничать я сюда захожу или нет - дело второстепенное. но задавать вопрос
    имея названием темы
    это (ну так чтоб тебя не оскорбить) затуп. но вернемся к декодированию. я взял твою строку, вставил её в консоль, обернул странной конструкцией декодирования (которая у тебя примерно в таком же виде и есть) и получил ожидаемый результат. ты видимо что-то не то ждешь но делаешь-то правильно так что не потерян ты для общества :D
     
  10. Greg_greg_dp

    Greg_greg_dp Новичок

    С нами с:
    27 ноя 2015
    Сообщения:
    15
    Симпатии:
    0
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    в console.log и вправду можно увидеть object который является массивом
    как его вывести? через for и for in я добиваюсь получить только номер объекта(массива) 0,1,2 итд
     
  11. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    а документация по языку что говорит? :D
     
  12. Greg_greg_dp

    Greg_greg_dp Новичок

    С нами с:
    27 ноя 2015
    Сообщения:
    15
    Симпатии:
    0
    Ничего не пойму!!!!!!!!!!
    php пофиксил
    Код (PHP):
    1. <?php
    2.             if(isset($_COOKIE['orders'])){
    3.                 $orders=  unserialize($_COOKIE['orders']);
    4.                 #$orders=  unserialize($_COOKIE['orders']);
    5.                 $json=json_encode($orders);
    6.                 setcookie('JSON',$json) ;
    7.                 
    8.             }  else {
    9.                 $orders=array();
    10.             }
    11.             if (isset($_POST['name']) && isset($_POST['count']) && isset($_POST['delivery']) && isset($_POST['payment'])) {
    12.                 $name = $_POST['name'];
    13.                 $count = $_POST['count'];
    14.                 $delivery = $_POST['delivery'];
    15.                 $payment = $_POST['payment'];
    16.                 $orders_new = array();
    17.                 $orders_new['name'] = $name;
    18.                 $orders_new['count'] = $count;
    19.                 $orders_new['delivery'] = $delivery;
    20.                 $orders_new['payment'] = $payment;
    21.                 array_push($orders,$orders_new);
    22.             }
    23.             #var_dump($orders);
    24.             if( setcookie('orders',  serialize($orders)) ){
    25.                 #echo 'cookies is set';
    26.             }  else {
    27.                 echo 'Doh';
    28.             }
    29.         ?> 
    вот адекватный js
    Код (PHP):
    1. function getCookie(name) {
    2.     var cookie = " " + document.cookie;
    3.     var search = " " + name + "=";
    4.     var setStr = null;
    5.     var offset = 0;
    6.     var end = 0;
    7.     if (cookie.length > 0) {
    8.         offset = cookie.indexOf(search);
    9.         if (offset != -1) {
    10.             offset += search.length;
    11.             end = cookie.indexOf(";", offset)
    12.             if (end == -1) {
    13.                 end = cookie.length;
    14.             }
    15.             setStr = unescape(cookie.substring(offset, end));
    16.         }
    17.     }
    18.     return(setStr);
    19. }
    20.  
    21.  
    22. var arr = JSON.parse(getCookie('JSON'));
    23.  
    Код (PHP):
    1. for(var i in arr){
    2.  
    3. for(var j in arr[i] ){
    4.  
    5. document.write(j);
    6.  
    7. }
    8.  
    9. }  
    выводит ключи!

    Код (PHP):
    1. for(var i in arr){
    2.  
    3. for(var j in arr[i] ){
    4.  
    5. for(var g in arr[j]){
    6.  
    7. document.write(g);
    8.  
    9. }
    10.  
    11. }
    12.  
    13. } 
    Ничего не выводит!

    Пожалуйста напишите как сделать чтобы это заработало!

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  13. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    для начала - перестать позориться и открыть уже мануал по языку джаваскрипт коих в интернетах можно легко найти не одну штуку. или задать тупейший запрос поисковой системе. тут настолько всё просто что реально позорно тебе пальцем в небо тыкак и ждать какого-то результата. почитай, сделай, радуйся тому что узнал что-то новое.
     
  14. Greg_greg_dp

    Greg_greg_dp Новичок

    С нами с:
    27 ноя 2015
    Сообщения:
    15
    Симпатии:
    0
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    не поверишь, уже запросов 15 задал, ну не могу найти ничего, и по мануалам тоже шастал.
    пи*дец, нужели сложно просто указать на ошибку а не е*ать мозги!...
     
  15. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а, прости, есть собственно что е6ать-то? )))) я пока не очень заметил.


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

    итак, следи за руками:

    for(var i in arr){ -- тут ты итериуешься по массиву арр. я помню что это у нас массив объектов значит ты всё правильно делаешь.

    for(var j in arr ){ -- тут ты итериуешь объект расположенный в массиве арр по ключу и. как ты до этого додумался если ты - аутист?

    document.write(j); // тут ты показываешь значение ключа текущей итерации по объекту расположенному в ключе и массива арр.

    что мешает сделать document.write(arr[j]) и увидеть что за значение соответствует этому ключу???????????????????????????????????????????????????????????????????????????????????????????
    какой пустотой заполняющей твою черепную коробку ты начинаешь делать for(var g in arr[j]) ???????????? как ты можешь искать ключ джей в массиве арр если он у тебя связан с итерацией совершенно другого объекта?????? ну ты реально тупой наверное да? не потому что я тебя оскорбить хочу а потому что ты банальнейшие операции не можешь выполнить уже несколько дней.

    дебуг:
    Код (PHP):
    1. arr = JSON.parse('[{"name":"Greg","count":"12","delivery":"Courier+service","payment":"Online+by+card+Visa\/Mastercard"},{"name":"Greg","count":"12","delivery":"Courier+service","payment":"Online+by+card+Visa\/Mastercard"}]')
    Код (Text):
    1. [Object, Object]
    Код (PHP):
    1. for(var i in arr){ for(var j in arr[i] ){ console.log(i, j, arr[i][j]) }}
    Код (Text):
    1. 0 name Greg
    2. 0 count 12
    3. 0 delivery Courier+service
    4. 0 payment Online+by+card+Visa/Mastercard
    5. 1 name Greg
    6. 1 count 12
    7. 1 delivery Courier+service
    8. 1 payment Online+by+card+Visa/Mastercard
    тебе очень надо научиться работать головой не только для того чтоб в неё есть. без этого ты в программировании ничего не добьешься. если такая простая задача вызвала у тебя многодневное изнасилование себя и упрёки что тебе кто-то мозг хочет вые6ать то я боюсь себе представить что с тобой будет когда задачи будут чутка сложнее... в петлю полезешь?

    удачки.
     
  16. Greg_greg_dp

    Greg_greg_dp Новичок

    С нами с:
    27 ноя 2015
    Сообщения:
    15
    Симпатии:
    0
    Re: Как корректно достать ассоциавн. массив с помощью JS из

    Oh My Globe!!!
    И вправду, вот жешь....

    Ах вот ты к чему вёл)) Прежде чем нормаль помочь и указать где косяк, нужно показать своё превосходство, какой ты гуру и опустить кого-нибудь...
    А про "аутиста" было даже немного смешно +1)
    Ну спасибо тебе на этом, большое спасибо!)
    Не будь таким зазнайкой, и проявляй хоть малейшую снисходительность к новичкам, мир!)