Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Sfat
  • Generarea și analizarea datelor JSON în PHP. Vizualizarea datelor JSON

Generarea și analizarea datelor JSON în PHP. Vizualizarea datelor JSON

funcția getData (id) ($ .ajax ((url: „unele adrese URL”, crossDomain: true, tip: „post”, date: (id: id), succes: funcție (date) (var json = jQuery.parseJSON ( date); alertă (date);),)););

$ name, "clubID" => $ clubID, "lID" => $ capac, "sName" => $ sName, "descriere" => $ desc)); echo $ json; ?>

Avertismente Javascript sub formă, ... Ce nu ar trebui să fie așa...

Nu repetați $ ID în PHP. Utilizați proprietatea jQuery dataType ajax și setați-o la json. Utilizați analizatorul JSON implicit javascript.

încercați să notificați json și nu date?

Javascript returnează un obiect deoarece de fapt avertizați obiectul. Încercați alerta (data.name);

sau alertă (data.clubID); , asta va funcționa.

Trebuie să specificați tipul de date pe care îl solicitați cerere ajax altfel jQuery va detecta inteligent pe baza tipului MIME. Dacă apelul ajax primește date json, le va folosi ca obiect JavaScript deci primești acest avertisment.

E corect.

JSON este un obiect. aka Notarea obiectelor Javascript... Acesta ar trebui să fie doar un caz. Ar trebui să conțină datele dvs. Încercați datele. *.

Apropo, dacă nu ștergeți datele care vin de la utilizatori înainte de a le utiliza cu orice interogare SQL, va cauza probleme.

Vedeți-l în acțiune cu un exemplu de bază:

// $ _POST ["id"] = "" SAU 1 "" $ rezultat = mysql_query ("SELECT * FROM clubmember WHERE clubID =" ". $ ID." "");

Întrebarea dvs. acum

SELECTAȚI * FROM clubmember WHERE clubID = "" SAU 1 ""

Pentru că 1 este întotdeauna adevărat, acum îți pot lua toată masa de club. Salutari.

Chiar dacă parseJSON returnează un obiect, execuția console.log ar trebui să arate care este o matrice de obiecte

Apelul .ajax () va, dacă nu este specificat niciun tip de date, „este rezonabil să ghicim” ce returnează pagina solicitată.
În cazul JSON, acesta va trece obiectul JavaScript la funcția de succes.

După ce am analizat întrebările tale, cred că înțeleg ce vrei să spui. Ceea ce vă așteptați este un singur obiect (căutați cu folosind SQL cum se spunea foarte nesigur) cu 5 proprietăți, nume, ID club, capac, sName și descriere. Cu toate acestea, se pare că vă întoarceți, sunt mai multe linii cu două proprietăți?
Spui că în timp ce scriptul php echo are valori corecte(un rând), dar JSON primește mai multe valori (/ rânduri).
Sunteți sigur că PHP primește ID-ul corect din apelul AJAX?

În acest articol, vreau să vorbesc despre formatul de schimb de date textuale - JSON și anume despre lucrul cu acest format în PHP.

JSON este un format de date textual compact. Poate fi folosit atât în ​​serviciile de transmisie de date pe Internet, cât și pentru stocarea informațiilor într-o formă structurată.

JSON ( Engleză Notarea obiectelor JavaScript) Este un format de schimb de date textuale bazat pe JavaScript și utilizat în mod obișnuit cu acest limbaj special. Ca mulți alții formate de text JSON este ușor de citit de oameni.

În ciuda originii sale din JavaScript (mai precis, dintr-un subset al standardului ECMA-262 din 1999), formatul este considerat independent de limbaj și poate fi folosit cu aproape orice limbaj de programare. Pentru multe limbi există cod gata pentru a crea și prelucra date în format JSON.

Beneficii practice folosind JSON se deschide când este utilizat tehnologii AJAX... JSON este mai concis și mai lizibil decât XML și este nativ pentru Javascript. În plus, este posibil să inserați funcții complet funcționale în codul JSON.

Da, în tehnologia AJAX, după părerea mea, principala sa aplicație este. Deoarece tehnologia AJAX presupune trimiterea unei cereri de client către server. Mai departe pe server cererea este procesată, iar rezultatul este trimis ca răspuns către client.

Vizualizarea datelor JSON

JSON acceptă toate formatele majore de date: șiruri de caractere, numere, boolean, precum și matrice și obiecte (cheie: combinații de valori, separate prin virgule și cuprinse între acolade).

Iată un exemplu de reprezentare a datelor în format JSON:

("id": "1", "nume": "ivan", "țara": "Rusia", "oficiu": ["yandex", "management"])

Să vedem ce poate transmite acest șir: o persoană numită „ivan”, sub identificatorul „1”, care locuiește în țara „Rusia”, lucrează pentru compania „yandex” în departamentul „management”.

Să mai dăm un exemplu. Site-ul are un formular părere alimentat de tehnologia AJAX. Vizitatorul completează informațiile, apoi sunt trimise către server pentru verificare, dacă nu sunt găsite erori, informațiile sunt salvate în baza de date și este trimis un răspuns despre salvarea cu succes. Dar dacă se găsesc erori, atunci este returnat un răspuns cu tipuri de erori.

Un exemplu de răspuns de eroare în format JSON:

("eroare": "1", "cod de eroare": ["empty_pers", "empty_mail", "empty_phone", "empty_letter", "empty_scode"])

Ceea ce înseamnă, de exemplu:

  • Trebuie să completați câmpul „Persoană de contact”.
  • Trebuie să completați câmpul „E-mail”.
  • Trebuie să completați câmpul „Telefon”.
  • Introduceți mesajul dvs
  • Este necesar să completați câmpul „Numărul din imagine”

Dacă nu există erori, atunci răspunsul este returnat:

("eroare": "0")

Asta spune despre trimiterea cu succes a datelor.

În PHP, extensia JSON este folosită pentru a reprezenta date în format JSON. Versiunile PHP mai vechi de 5.2.0 au suport JSON încorporat în nucleu, mai mult versiuni timpurii trebuie să fie conectat la scriptul dvs fișier suplimentar cu functii.

Deci, în PHP, două funcții sunt responsabile pentru lucrul cu date în format JSON: json_encode () și json_decode ().

Conversia datelor în format JSON

$ json_data = array ("id" => 1, "name" => "ivan", "country" => "Rusia", "office" => array ("yandex", "management")); echo json_encode ($ json_data);

Conversie inversă a datelor din formatul JSON

$ json_string = "(" id ": 1," nume ":" ivan "," țara ":" Rusia "," birou ": [" yandex "," management "])"; $ obj = json_decode ($ json_string);

Acum $ obj va conține date JSON traduse într-un obiect PHP, pe care îl puteți accesa după cum urmează:

Echo $ obj-> nume; // Va afișa numele ivan echo $ obj-> office; // Afișează compania yandex

După cum puteți vedea, $ obj-> office este o matrice.

Foreach ($ obj-> office ca $ val) echo $ val;

Lucrul cu JSON vă permite să faceți schimb de date cu serverul în « formă pură» ... Necesitatea de a trimite bucăți greoaie de cod HTML este complet eliminată.

JSON (JavaScript Object Notation) este un format pentru schimbul de date în forma text... Vă permite să transferați structuri complexe de date în formă serializată. Acest format de transfer de date a devenit atât de popular încât funcțiile de procesare a datelor în acest format au fost adăugate la nucleul PHP începând cu versiunea 5.2.0. Aceasta înseamnă că nu este nevoie să vă conectați extensii suplimentare... Formatul de date JSON este bine înțeles de oameni. în plus tipul dat schimbul de date este utilizat pe scară largă între diverse servicii API. Și cu dezvoltarea corectă a algoritmilor pentru schimbul de informații, puteți obține un câștig de viteză foarte mare decât, de exemplu, atunci când lucrați cu date în format XML.

Trimiterea datelor

Există două moduri de a trimite date în format JSON: formați un GET sau Solicitare POST cu date codificate situate într-o variabilă GET sau POST sau plasați datele în corpul documentului. În practică, a doua opțiune este de obicei utilizată.

Următoarele funcții sunt necesare pentru a trimite date:

  • şir json_encode(valoare mixtă [, opțiuni int = 0])

    Parametrul valoare este datele care trebuie codificate. Orice tip este acceptat, cu excepția tipului resursă... Parametrul opțiuni conține o mască de biți a posibilelor valori furnizate (consultați tabelul pentru constantele JSON furnizate).

  • resursă stream_context_create (])

    Această funcție este destinată să creeze și să returneze un context de flux cu opțiunile specificate în parametrul opțiuni. Parametrul opțional opțional trebuie să fie de tip matrice asociativă. Inițial, este gol. Al doilea parametru opțional params trebuie să fie, de asemenea, o matrice asociativă în formatul $ data [‘nume’] = valoare.

  • şir file_get_contents(șir nume de fișier [, bool use_include_path [, contextul resursei [, int offset [, int maxlen]]]])

    Utilizarea acestei funcții vă permite să obțineți conținutul unui fișier ca șir. Parametrul nume de fișier este numele fișierului de citit. În parametrul use_include_path începând cu versiuni PHP 5 puteți folosi o constantă FILE_USE_INCLUDE_PATH pentru a găsi fișierul în calea include. Parametrul context reprezintă o resursă de context creată folosind stream_context_create (). În cazul unei încercări eșuate de a deschide fișierul, valoarea va fi returnată fals... Parametrul offset conține offset-ul de la care se începe citirea datelor. Parametrul maxlen specifică dimensiunea datelor primite.

    Notă: Offset-ul nu este specificat atunci când lucrați cu fluxuri de la distanță.

Mai jos este un exemplu de trimitere a datelor în format JSON:

// Date de trimis cerere $ = matrice ("StartDate" => "2013-10-10", "EndDate" => "2013-10-10", "IDS" => matrice (1,2,3,4 , 5,6,7)); // Specificați opțiunile pentru contextul fluxului $ options = array ("http" => matrice ("method" => "POST", "header" => "Content-Type: application / json; charset = utf-8 \ r \ n "," conținut "=> json_encode (solicitare $))); // Creați contextul fluxului $ context = stream_context_create ($ opțiuni); // Trimiterea datelor și primirea rezultatului echo file_get_contents ("http://test.ru/json.php", 0, $ context);

Utilizează o structură de date improvizată constând din date de început și de sfârșit și o serie de numere pentru unele înregistrări condiționate. Rețineți că în antetul cererii Tipul de conținut tipul este „application / json”.

Recuperarea datelor

Pentru a primi datele transmise în modul descris mai sus, este necesar să citiți datele din fluxul de intrare „ php: // intrare”.

Funcții utilizate pentru acceptarea datelor:

  • amestecat json_decode(șir json [, bool assoc = false [, int depth = 512 [, int opțiuni = 0]]])

    Această funcție decodifică un șir JSON. Parametrul json specifică șirul de decodat. Parametrul assoc controlează dacă datele returnate sunt convertite într-o matrice asociativă. Dacă există o astfel de nevoie, atunci trebuie să specificați ca valoare a acestui parametru Adevărat... Parametrul depth indică adâncimea recursiei. Iar ultimul al patrulea parametru, opțiuni, conține masca de biți pentru opțiuni pentru decodare. Momentan doar acceptat JSON_BIGINT_AS_STRING(întregii mari sunt convertiți implicit în floats)

  • resursă fopen(nume fișier șir, mod șir [, bool use_include_path [, contextul resursei]])

    Deschide un fișier și returnează un descriptor de fișier. Parametrul nume de fișier este o resursă numită care indică un fișier. Parametrul mode specifică tipul de acces la fișier (vezi tabelul cu lista modurilor posibile pentru fopen ()). Apoi sunt doi parametrii optionali acestea sunt: ​​use_include_path și context. Când setați parametrul use_include_path la Adevărat sau 1 și cu condiția ca resursa numită să fie dată cale relativă, fisierul de deschis va fi cautat in lista directoarelor folosite de functii includeși cere... În practică, acest parametru practic nu este utilizat. Parametrul context este utilizat pentru a specifica contextul resursei.

  • şir stream_get_contents(mânerul resursei [, int maxlen = -1 [, int offset = -1]])

    Această funcție vă permite să obțineți conținutul unui flux ca șir. Parametrul handle este o resursă fir. Parametrul maxlen conține suma maxima octet de citit. În mod implicit, este setat la -1, ceea ce indică faptul că toate datele sunt primite. Parametrul offset conține offset-ul de la care se începe citirea datelor. În mod implicit, este setat și la -1, ceea ce înseamnă că citirea se va face din poziția de pornire.

Mai jos este un exemplu de obținere a datelor în format JSON pe partea de server:

// Deschide fluxul de intrare pentru citirea $ f = fopen ("php: // input", "r"); // Obține conținutul fluxului $ data = stream_get_contents ($ f); if ($ date) (// Cod de procesare print_r (json_decode ($ date));)

Structura de date rezultată:

Obiect StdClass (=> 10-10-2013 => 10-10-2013 => Matrice (=> 1 => 2 => 3 => 4 => 5 => 6 => 7))

Notă: este necesar să se țină cont de faptul că pentru a lucra cu formatul JSON, datele trebuie să fie în codificare utf-8.

Furnizat de Constante JSON pentru funcția json_encode ().

JSON_HEX_TAG (întreg) Toate sunt codificate în \ u003C și \ u003E. Disponibil începând cu PHP 5.3.0.
JSON_HEX_AMP (întreg) Toate & sunt codificate în \ u0026. Disponibil începând cu PHP 5.3.0.
JSON_HEX_APOS (întreg) Toate caracterele sunt codificate în \ u0027. Disponibil începând cu PHP 5.3.0.
JSON_HEX_QUOT (întreg) Toate caracterele sunt „codate în \ u0022. Disponibil începând cu PHP 5.3.0.
JSON_FORCE_OBJECT (întreg) Emiteți un obiect în loc de o matrice atunci când utilizați o matrice non-asociativă. Acest lucru este util atunci când programul sau codul de primire așteaptă un obiect sau matricea este goală. Disponibil începând cu PHP 5.3.0.
JSON_NUMERIC_CHECK (întreg) Codificați șirurile care conțin numere ca numere. Disponibil începând cu PHP 5.3.3.
JSON_BIGINT_AS_STRING (întreg) Codifică numere întregi mari ca echivalente de șir. Disponibil începând cu PHP 5.4.0.
JSON_PRETTY_PRINT (întreg) Utilizare caractere cu spații albeîn datele returnate pentru a le formata. Disponibil începând cu PHP 5.4.0.
JSON_UNESCAPED_SLASHES (întreg) Nu scapi /. Disponibil începând cu PHP 5.4.0.
JSON_UNESCAPED_UNICODE (întreg) Nu codificați multiocteți Caractere Unicode(în mod implicit, acestea sunt codificate ca \ uXXXX). Disponibil începând cu PHP 5.4.0.

Lista modurilor posibile pentru fopen () folosind modul

„R” Deschide fișierul numai în citire; pune indicatorul la începutul fișierului.
„R +” Deschide un fișier pentru citire și scriere; pune indicatorul la începutul fișierului.
„W” Deschide un fișier numai pentru scriere; pune indicatorul la începutul fișierului și trunchiază fișierul la lungimea zero. Dacă fișierul nu există, încearcă să-l creeze.
„W +” Deschide un fișier pentru citire și scriere; pune indicatorul la începutul fișierului și trunchiază fișierul la lungimea zero. Dacă fișierul nu există, încearcă să-l creeze.
'A' Deschide un fișier numai pentru scriere; pune indicatorul la sfârșitul fișierului. Dacă fișierul nu există, încearcă să-l creeze.
„A +” Deschide un fișier pentru citire și scriere; pune indicatorul la sfârșitul fișierului. Dacă fișierul nu există, încearcă să-l creeze.
'X' Creează și deschide doar pentru scris; pune indicatorul la începutul fișierului. Dacă fișierul există deja, fopen () va eșua, va returna FALSE și va genera o eroare la nivel E_WARNING. Dacă fișierul nu există, va încerca să-l creeze. Acest lucru este echivalent cu specificarea steagurilor O_EXCL | O_CREAT pentru apelul de sistem deschis intern (2).
„X +” Creează și deschide spre citit și scris; altfel are același comportament ca „x”.
„C” Deschide un fișier numai pentru scriere. Dacă fișierul nu există, atunci este creat. Dacă fișierul există, atunci nu este trunchiat (spre deosebire de „w”), iar un apel la această funcție nu provoacă o eroare (cum este cazul cu „x”). Indicatorul fișierului va fi setat la începutul fișierului. Acest lucru poate fi util dacă doriți să blocați un fișier (vezi flock ()) înainte de a schimba, deoarece folosirea „w” poate trunchia fișierul înainte ca blocarea să fie obținută (dacă doriți să trunchiați fișierul, puteți utiliza ftruncate () după o cerere de blocare).
„C +” Deschide un fișier pentru citire și scriere; altfel are același comportament ca „c”.

Top articole similare