Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JSON przekazanie tablicy z PHP do JS
Forum PHP.pl > Forum > PHP
Resurrection
Witam. Chcę przekazać tablicę z php do js
Tablica jest zapisywana w pętli :
Kod
....
$_SESSION['tabOne'][]=$_FILES['polePrzekaznika']['name'][$j];
...

następnie zamieniam ją na obiekt JSON:
Kod
$objJSON=array();
$objJSON=json_encode($_SESSION['tabOne']);

kolejny krok to zamiana w stworzonym ciągu znaku ' na " . Zmiana następuję ponieważ doczytałem się że objekt JSON w PHP od tego samego obiektu w JS różni się formą zapisu.
Kod
$objJSONConvert=str_replace("\"","'",$objJSON);

w kolejnym kroku wywołuje między innymi funkcje JS do której ma być przekazana tablica.
Kod
echo'<script type="text/javascript">document.getElementById(\'information\').innerHTML=\''.$inf.' \';wstawInfo('.$objJSONConvert.')</script>';

W funkcji JS wykonuje:
Kod
function wstawInfo(tabOneJS)
  {
      var tOJS=JSON.parse(tabOneJS);
         .....
}

i właśnie tu wyrzuca mi błąd:
Błąd: JSON.parse: unexpected character
Co wykonuje źle? Proszę o wskazówki.
Pacio
Twoj str_replace zamienia " na '.
Resurrection
Źle opisałem. Czy tak czy tak błąd jest ten sam :-(
Pacio
Sprawdz w zrodle strony jak wyglada JSON wrzucony przez PHP, obejmij go cudzyslowami:
  1. wstawInfo("'.$objJSONConvert.'")
Resurrection
Przy jednym elemencie w tablicy:
["nazwa.jpg"]

po wstawieniu w cudzysłów:
Kod
echo'<script type="text/javascript">document.getElementById(\'information\').innerHTML=\''.$inf.' \';wstawInfo("'.$objJSONConvert.'");</script>';

otrzymuje błąd :
Błąd: missing ) after argument list
Kod źródłowy:
document.getElementById('information').innerHTML='ładowanie zostało zakończone ';wstawInfo("["IMG_5796.JPG"]");
Pacio
W JSON sa cudzyslowy, wiec obejmij go apostrofami:
  1. wstawInfo(\''.$objJSONConvert.'\')
Resurrection
Dziękuję za pomoc.Tylko nie wiem dlaczego w ten sposób.
Pacio
Jako parametr funkcji podajesz string, wiec musi byc on w cudzyslowach lub apostrofach. Bez tego JS potraktuje parametr jak zmienna:
  1. wstawInfo(zmienna);

  1. wstawInfo('jakis string');

Dopiero JSON.parse robi z tego strina obiekt.
kiler129
A ja zapytam po co kombinować? Sam json_encode generuje ładny JSON trawiony bez str_replace w JS ;]
absflg
Nic nie trzeba zmieniać. PHP generuje zgodny ze standardami JSON. Jeżeli pozmieniasz cudzysłowy na apostrofy to uzyskasz błędny JSON (np. jQuery odrzuca kod z apostrofami).

Swoją drogą - nie wiem skąd ci przyszedł do głowy tak absurdalny pomysł, że niby funkcje dostarczane z PHP mogą działać błędnie...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.