Come configurare smartphone e PC. Portale informativo
  • casa
  • Consiglio
  • Creazione e analisi di dati JSON in PHP. Visualizzazione dati JSON

Creazione e analisi di dati JSON in PHP. Visualizzazione dati JSON

function getData(id) ( $.ajax(( url: "some url", crossDomain: true, type: "post", data: ( id: id ), success: function (data) ( var json = jQuery.parseJSON( dati); avviso(dati); ), )); );

$nome, "clubID" => $clubID, "lID" => $lID, "sName" => $sName, "descrizione" => $desc)); eco $json; ?>

avvisi javascript sotto forma di , ... Che non dovrebbe essere il caso ...

Non ripetere $ID nel tuo PHP. Usa la proprietà ajax dataType di jQuery e impostala su json. Usa il parser json javascript predefinito.

prova ad avvisare json e non i dati?

Javascript restituisce un oggetto perché stai effettivamente avvisando l'oggetto. Prova alert(data.name);

o avviso(data.clubID); , Funzionerà.

È necessario specificare il tipo di dati che sta richiedendo richiesta ajax, altrimenti jQuery rileverà "in modo intelligente" in base al tipo MIME. Se la chiamata ajax riceve dati json, li utilizzerà come oggetto JavaScript, motivo per cui ricevi questo avviso.

È giusto.

JSON è un oggetto. alias Notazione oggetto Javascript. Dovrebbe essere nel caso. Dovrebbe contenere i tuoi dati. Prova dati.* .

A proposito, se non sanifichi i dati provenienti dai tuoi utenti prima di utilizzarli con qualsiasi query SQL, causeranno problemi.

Guardalo in azione con un esempio di base:

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

La tua richiesta ora

SELECT * FROM clubmember WHERE clubID =""OR 1""

Perché 1 è sempre vero, ora posso prendere l'intero tavolo del club. Saluti.

Anche se parseJSON restituisce un oggetto, l'esecuzione di console.log dovrebbe mostrare quale è un array dell'oggetto

La chiamata .ajax(), se il parametro dataType non è specificato, "indovina ragionevolmente" cosa restituisce la pagina richiesta.
Nel caso di JSON, passerà l'oggetto JavaScript alla funzione success.

Dopo aver esaminato le tue domande, credo di aver capito cosa intendi. Quello che ti aspetti è un singolo oggetto (cerca con usando SQL, come detto molto insicuro) con 5 proprietà, nome, clubID, lID, sName e descrizione. Tuttavia, sembra che quello che stai ottenendo siano più righe con due proprietà?
Lo dici mentre lo script php echo ha valori corretti(riga singola) ma il JSON riceve più valori (/righe).
Sei sicuro che PHP stia ottenendo l'ID corretto dalla chiamata AJAX?

In questo articolo, voglio parlare del formato di scambio di dati di testo - JSON, ovvero di lavorare con questo formato in PHP.

JSON è un formato di dati di testo compatto. Può essere utilizzato sia nei servizi di trasmissione dati su Internet che per la memorizzazione di informazioni in forma strutturata.

JSON ( inglese Notazione oggetto JavaScript) è un formato di scambio di dati basato su testo basato su JavaScript e comunemente utilizzato con questo particolare linguaggio. Come molti altri formati di testo, JSON è facile da leggere dagli esseri umani.

Nonostante le sue origini in JavaScript (più precisamente, un sottoinsieme del linguaggio dello standard ECMA-262 del 1999), il formato è considerato indipendente dal linguaggio e può essere utilizzato con quasi tutti i linguaggi di programmazione. Per molte lingue c'è codice finito per creare ed elaborare dati in formato json.

Vantaggi pratici Utilizzo JSON si apre quando viene utilizzato Tecnologie AJAX. Il formato JSON è più conciso e leggibile di XML ed è nativo di Javascript. Inoltre, nel codice JSON possono essere inserite funzioni completamente funzionali.

Sì, è nella tecnologia AJAX, secondo me, la sua principale applicazione. Poiché la tecnologia AJAX prevede l'invio di una richiesta client al server. Successivamente, la richiesta viene elaborata sul server e il risultato viene inviato in risposta al client.

Visualizzazione dati JSON

JSON supporta tutti i principali formati di dati: stringhe, numeri, booleani, nonché array e oggetti (combinazioni chiave:valore separate da virgole e racchiuse tra parentesi graffe).

Ecco un esempio di rappresentazione dei dati in formato JSON:

("id":"1","name":"ivan","country":"Russia","office":["yandex","management"])

Vediamo cosa può trasmettere questa linea: una persona con il nome "ivan", con l'identificatore "1", che vive nel paese "Russia", lavora presso l'azienda "yandex" nel dipartimento "gestione".

Facciamo un altro esempio. Il sito ha un modulo. risposta, lavorando sulla tecnologia AJAX . Il visitatore compila le informazioni, quindi vengono inviate al server per la verifica, se non vengono rilevati errori, le informazioni vengono salvate nel database e viene inviata una risposta sul salvataggio riuscito. Ma se vengono rilevati errori, viene restituita una risposta con tipi di errore.

Un esempio di risposta di errore in formato JSON:

("error":"1","errorcode":["empty_pers","empty_mail","empty_phone","empty_letter","empty_scode"])

Che, ad esempio, significa:

  • Devi compilare il campo "Contatto".
  • Devi compilare il campo "E-mail".
  • Devi compilare il campo "Telefono".
  • Inserisci il tuo messaggio
  • Devi compilare il campo "Numero nell'immagine".

Se non ci sono errori, viene restituita la risposta:

("errore":"0")

Ciò che indica il corretto invio dei dati.

In PHP, l'estensione JSON viene utilizzata per rappresentare i dati in formato JSON. Nelle versioni di PHP precedenti alla 5.2.0, il supporto JSON è integrato nel core, in più prime versioni deve essere collegato al tuo script file aggiuntivo con funzioni.

Quindi in PHP, due funzioni sono responsabili dell'utilizzo dei dati JSON: json_encode() e json_decode() .

Conversione dei dati in formato JSON

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

Trasformazione inversa dei dati dal formato JSON

$json_string="("id":1,"name":"ivan","country":"Russia","office":["yandex","management"])"; $obj=json_decode($json_string);

Ora $obj conterrà i dati JSON tradotti in un oggetto PHP, a cui puoi accedere come segue:

eco $oggetto->nome; //Mostra il nome ivan echo $obj->office; //Visualizza l'azienda yandex

Come puoi vedere, $obj->office è un array.

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

L'utilizzo di JSON consente di scambiare dati con il server in « forma pura» . Non è necessario inviare pezzi ingombranti di codice HTML.

JSON (JavaScript Object Notation) è un formato per lo scambio di dati forma di testo. Consente di trasferire strutture di dati complesse in una forma serializzata. Questo formato di trasferimento dati è diventato così popolare che dalla versione 5.2.0 del core PHP sono state aggiunte funzioni per l'elaborazione dei dati in questo formato. E questo significa che non è necessario connettersi estensioni aggiuntive. Il formato dei dati JSON è ben compreso da un essere umano. Oltretutto dato tipo lo scambio di dati è ampiamente utilizzato tra diversi servizi API. E con il corretto sviluppo di algoritmi per lo scambio di informazioni, puoi ottenere un aumento di velocità molto elevato rispetto, ad esempio, quando si lavora con dati in formato XML.

Invio dati

Esistono due modi per inviare dati in formato JSON: formare un GET o Richiesta POST con dati codificati che si trovano in una variabile GET o POST, oppure inserisci i dati nel corpo del documento. In pratica, viene solitamente utilizzata la seconda opzione.

Per inviare i dati sono necessarie le seguenti funzioni:

  • corda json_encode(valore misto [, opzioni int = 0 ])

    Il parametro value specifica i dati da codificare. Qualsiasi tipo è supportato tranne il tipo risorsa. Il parametro options contiene una maschera di bit dei possibili valori forniti (vedi tabella con costanti fornite JSON).

  • risorsa stream_context_create (])

    Questa funzione ha lo scopo di creare e restituire un contesto di thread con le opzioni specificate nel parametro options. Il parametro delle opzioni facoltative deve essere un tipo di matrice associativa. Inizialmente è vuoto. Anche il secondo parametro params opzionale deve essere un array associativo nel formato $data['name'] = valore.

  • corda file_get_contents(string filename [, bool use_include_path [, contesto della risorsa [, int offset [, int maxlen ]]]]])

    L'utilizzo di questa funzione consente di ottenere il contenuto di un file come stringa. Il parametro filename è il nome del file da leggere. Nel parametro use_include_path a partire da Versioni PHP 5 puoi usare una costante FILE_USE_INCLUDE_PATH per cercare un file nel percorso di inclusione. Il parametro di contesto rappresenta la risorsa di contesto creata con la funzione stream_context_create(). In caso di tentativo fallito di aprire il file, il valore verrà restituito. falso. Il parametro offset contiene l'offset da cui iniziare a leggere i dati. Il parametro maxlen specifica la dimensione dei dati ricevuti.

    Nota: l'offset non è specificato quando si lavora con thread remoti.

Quello che segue è un esempio di invio di dati in formato JSON:

// Dati da inviare $request = array("StartDate" => "2013-10-10", "EndDate" => "2013-10-10", "IDS" => array(1,2,3,4 ,5,6,7)); // Specifica delle opzioni per il contesto del flusso $options = array ("http" => array ("method" => "POST", "header" => "Content-Type: application/json; charset=utf-8\r \ n", "contenuto" => json_encode($richiesta))); // Crea un contesto di flusso $context = stream_context_create($options); // Invio dei dati e ottenimento del risultato echo file_get_contents("http://test.ru/json.php", 0, $context);

Utilizza una struttura di dati improvvisata composta da una data di inizio e di fine, nonché una matrice di numeri di alcuni record condizionali. Si noti che nell'intestazione della richiesta tipo di contenuto viene specificato il tipo "application/json".

Ottenere dati

Per ricevere i dati trasferiti secondo le modalità sopra descritte, è necessario leggere i dati dal flusso di input “ php://input”.

Funzioni utilizzate per accettare i dati:

  • misto json_decode(string json [, bool assoc = false [, int depth = 512 [, int options = 0 ]]])

    Questa funzione decodifica una stringa JSON. Il parametro json specifica la stringa da decodificare. Il parametro assoc controlla se i dati restituiti verranno convertiti in un array associativo. Se è necessario, è necessario specificare come valore di questo parametro vero. Il parametro depth indica la profondità della ricorsione. E l'ultimo quarto parametro options contiene la maschera di bit delle opzioni da decodificare. Attualmente supportato solo JSON_BIGINT_AS_STRING(per impostazione predefinita, i numeri interi grandi vengono convertiti in numeri in virgola mobile (virgola mobile))

  • risorsa fope(string filename , string mode [, bool use_include_path [, contesto della risorsa ]])

    Apre un file e ne restituisce l'handle. Il parametro filename è una risorsa denominata che punta a un file. Il parametro mode specifica il tipo di accesso al file (consultare la tabella per un elenco delle modalità possibili per fopen()). Poi vengono due parametro opzionale questi sono: use_include_path e context . Quando si imposta il parametro use_include_path su vero o 1 e a condizione che la risorsa denominata sia impostata su percorso relativo, il file in fase di apertura verrà ricercato nell'elenco delle directory utilizzate dalle funzioni includere e richiedere. In pratica, questo parametro non viene praticamente utilizzato. Il parametro context viene utilizzato per specificare il contesto della risorsa.

  • corda stream_get_contents(handle delle risorse [, int maxlen = -1 [, int offset = -1 ]])

    Questa funzione consente di ottenere il contenuto dello stream come stringa. Il parametro handle è una risorsa di flusso. Il parametro maxlen contiene importo massimo byte da leggere. Per impostazione predefinita, è impostato su -1, che indica che tutti i dati sono stati ricevuti. Il parametro offset contiene l'offset da cui iniziare a leggere i dati. È anche impostato su -1 per impostazione predefinita, il che significa che leggerà dalla posizione iniziale.

Di seguito è riportato un esempio di acquisizione di dati in formato JSON sul lato server:

// Apre il flusso di input per leggere $f = fopen("php://input", "r"); // Ottieni il contenuto dello stream $data = stream_get_contents($f); if ($data) ( // Codice di elaborazione print_r(json_decode($data)); )

La struttura dei dati risultante:

Oggetto StdClass ( => 2013-10-10 => 2013-10-10 => Array ( => 1 => 2 => 3 => 4 => 5 => 6 => 7))

Nota: è necessario tenere conto del fatto che per poter lavorare con il formato JSON, i dati devono essere codificati in utf-8.

Fornito costanti json per la funzione json_encode()

JSON_HEX_TAG (numero intero) Tutti sono codificati in \u003C e \u003E. Disponibile da PHP 5.3.0.
JSON_HEX_AMP (numero intero) Tutti i & sono codificati in &. Disponibile da PHP 5.3.0.
JSON_HEX_APOS (numero intero) Tutti i caratteri ' sono codificati in \u0027. Disponibile da PHP 5.3.0.
JSON_HEX_QUOT(numero intero) Tutti i caratteri " sono codificati in \u0022. Disponibile da PHP 5.3.0.
JSON_FORCE_OBJECT(numero intero) Restituisce un oggetto invece di un array quando si utilizza un array non associativo. Ciò è utile quando il programma o il codice ricevente si aspetta un oggetto o l'array è vuoto. Disponibile da PHP 5.3.0.
JSON_NUMERIC_CHECK(numero intero) Codifica di stringhe contenenti numeri come numeri. Disponibile da PHP 5.3.3.
JSON_BIGINT_AS_STRING(intero) Codifica numeri interi grandi come equivalenti di stringa. Disponibile da PHP 5.4.0.
JSON_PRETTY_PRINT(numero intero) Utilizzo caratteri di spazio vuoto nei dati restituiti per formattarlo. Disponibile da PHP 5.4.0.
JSON_UNESCAPED_SLASHES (numero intero) Non scappare /. Disponibile da PHP 5.4.0.
JSON_UNESCAPED_UNICODE(intero) Non codificare multibyte Caratteri Unicode(sono codificati come \uXXXX per impostazione predefinita). Disponibile da PHP 5.4.0.

Elenco di possibili modalità per fopen() using mode

'R' Apre un file di sola lettura; posiziona il puntatore all'inizio del file.
'r+' Apre un file per la lettura e la scrittura; posiziona il puntatore all'inizio del file.
'w' Apre un file solo per la scrittura; posiziona il puntatore all'inizio del file e tronca il file a lunghezza zero. Se il file non esiste, tenta di crearlo.
'w+' Apre un file per la lettura e la scrittura; posiziona il puntatore all'inizio del file e tronca il file a lunghezza zero. Se il file non esiste, tenta di crearlo.
'un' Apre un file solo per la scrittura; posiziona un puntatore alla fine del file. Se il file non esiste, tenta di crearlo.
'a+' Apre un file per la lettura e la scrittura; posiziona un puntatore alla fine del file. Se il file non esiste, tenta di crearlo.
'X' Crea e apre solo per la scrittura; posiziona il puntatore all'inizio del file. Se il file esiste già, la chiamata fopen() fallirà, restituirà FALSE e genererà un errore di livello E_WARNING. Se il file non esiste, proverà a crearlo. Ciò equivale a specificare i flag O_EXCL|O_CREAT per la chiamata di sistema interna open(2).
'x+' Crea e apre per leggere e scrivere; altrimenti ha lo stesso comportamento di 'x'.
'C' Apre un file in sola scrittura. Se il file non esiste, viene creato. Se il file esiste, non viene troncato (a differenza di 'w') e una chiamata a questa funzione non genera un errore (come nel caso di 'x'). Il puntatore del file verrà impostato all'inizio del file. Questo può essere utile se vuoi bloccare il file (vedi flock()) prima di cambiarlo, poiché usando 'w' puoi troncare il file prima che il lock sia stato acquisito (se vuoi troncare il file, puoi usare ftruncate () funzione dopo la richiesta di blocco).
'c+' Apre un file per la lettura e la scrittura; altrimenti ha lo stesso comportamento di 'c'.

Articoli correlati in alto