Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP]Przekazywanie tablicy do JS
Warmix
post 18.09.2017, 11:03:53
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

Ostrzeżenie: (0%)
-----


Mam daną tablicę pod zmienną $arr.
  1. $arr = array("test"=>"123", "test2"=>"567");


Chcę teraz przekazać tą tablicę do funkcji javascript. Robię to tak:

  1. $exe = addslashes(json_encode($arr));


Efekt po echo $exe:
Cytat
{\"test\":\"123\",\"test2\":\"567\"}


Teraz wpuszczam to w funkcję tak:

  1. ....
  2. ....
  3. echo '<td onclick="editExe(this, '.$sEE->getId().', \'editExeName\', \''.$exe .'\');">'.$sEE->getIdExeName().'</td>';
  4. ....
  5. ....


Niestety, funkcja JS w ogóle nie uruchamia się. W konsoli wyrzuca błąd:
Cytat
Uncaught SyntaxError: Invalid or unexpected token


Oczywiście funkcja uruchamia się bez problemu, jeżeli nie wrzucam tam tablicy, np.:
  1. ....
  2. ....
  3. echo '<td onclick="editExe(this, '.$sEE->getId().', \'editExeName\', \'test\');">'.$sEE->getIdExeName().'</td>';
  4. ....
  5. ....


W jaki sposób mogę to naprawić?
Go to the top of the page
+Quote Post
olszam
post 18.09.2017, 11:17:00
Post #2





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

Ostrzeżenie: (0%)
-----


sprawdź z wrzuconą tablicą na sztywno w miejsce $exe albo wyrzucić addslashes
Go to the top of the page
+Quote Post
sabat24
post 18.09.2017, 11:27:23
Post #3





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Zrób to tak:

  1. echo '<td onclick="editExe(\''.json_encode($arr).'\')"></td>';
Go to the top of the page
+Quote Post
Warmix
post 18.09.2017, 11:30:21
Post #4





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

Ostrzeżenie: (0%)
-----


Cytat(olszam @ 18.09.2017, 12:17:00 ) *
sprawdź z wrzuconą tablicą na sztywno w miejsce $exe albo wyrzucić addslashes


Próbowałem obu opcji. Wrzucenie na sztywno tablicy $exe wyrzuca błąd:
Cytat
Notice: Array to string conversion in...


Z samym json_encode bez addslahes wyrzuca ten sam błąd:
Cytat
Uncaught SyntaxError: Invalid or unexpected token


Ze względu na sposób umieszczenia tej zmiennej w otagowanym onclick za pomocą cudzysłowów wydaje się, że jednak addslashes powinno być, kod źródłowy strony wskazuje wtedy:
  1. <td onclick="editExe(this, 1, 'editExeName', '{\"test\":\"123\",\"test2\":\"567\"}');">test</td>






Cytat(sabat24 @ 18.09.2017, 12:27:23 ) *
Zrób to tak:

  1. echo '<td onclick="editExe(\''.json_encode($arr).'\')"></td>';


Tak też próbowałem na początku, wrzucić bezpośrednio, jednak przez ciągły ten sam błąd wyrzuciłem na zewnątrz - teraz jeszcze raz sprawdziłem, tak jak napisaleś - ten sam błąd:
Cytat
Uncaught SyntaxError: Invalid or unexpected token


Ten post edytował Warmix 18.09.2017, 11:32:50
Go to the top of the page
+Quote Post
sabat24
post 18.09.2017, 11:43:27
Post #5





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Zapomniałem o jednym:

  1. echo '<td onclick="editExe(\''.htmlentities(json_encode($arr)).'\')"></td>';


Chyba, że chcesz mieć dane jako JSON bezpośrednio, to wtedy możesz wstawić obiekt JSON bez apostrofów.
Go to the top of the page
+Quote Post
Warmix
post 18.09.2017, 11:54:36
Post #6





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

Ostrzeżenie: (0%)
-----


Okej, działa poprawnie, nie sądziłem, że mogę to przepuścić przez htmlentities czy htmlspecialchars i będzie w taki sposób działać. Dzięki smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 13:59