- Home
- Categorie
- Coding e Sistemistica
- PHP
- from Jscrpt to PHP [JSON]
-
Un piccolo passo avanti
php code
$json_str=('{"titolo":"La bella addormentata nel bosco","capitoli":[{"pagine":"299.5","Dat":"31/8/2009","Com":"lascia un commento..."}]}'); $obj=json_decode($json_str); echo 'titolo='.$obj->titolo;
Continua a funzionare .... Pian piano sembro capire meglio la situazione !!!
Domandina come accedo ai valori dell'array "capitoli" ?
byez
-
Nessun problema,
è stato un piacere !A presto
-
Perfetto ... funziona tutto se faccio fare il json_decode manualmente (impostando la stringa a mano) ma se ricavo la stringa dal $_POST[] non và
C'è qualche accorgimento durante il passaggio di variabili POST dal Javascript verso il PHP ?
Ho provato già la funzione addslashes() e utf8_decode() ma non serve a nulla !!thanks
-
Ciao Gandalf,
scusa se non ti ho risposto per le proprietà dei capitoli: me la ero persaComunque,
tornando all'ultimo post,
penso che un motivo possa essere che in post le variabili arrivano 'cosi' invece di "cosi" e quindi il parse della stringa json non termina correttamente.Prova a inizializzarle in questo modo:
[php]$varInPOST = "" . $_POST['var'];[/php]Buona notte.
-
Ciao mirkoagrati, grazie ancora per i consigli comunque ho risolto le mie pene, la soluzione è usare la funzione nativa php
---> STRIPSLASHES()($_POST['var_from_javascript'])Pulisce la stringa da apici credo...
bye
-
Mitico !
Allora poi ci avevamo azzeccato: era solo una questione di apici.
D'altronde la sintassi JSON vuole che le proprietà e valori siano all'interno di doppi apici, mentre in PHP si è abituati ad utilizzare gli apici singoli.
Ciao
-
Fantastico! Ho affrontato esattamente TUTTI GLI STESSI PROBLEMI... se avessi letto questo post prima, avrei risparmiato qualche ora di tempo e qualche neurone dell'esaurimento nervoso. Tuttavia ho un problema a cui non trovo una soluzione pulita: devo passare nel json del codice html, con, chiaramente, le virgolette degli attributi.
E fin qui non ci scostiamo dal problema di Mirko. Tuttavia, server su cui sto lavorando, aggiunge slash, a tutti gli apici che trova (quindi anche quelli di json). Gli gli slash vanno tolti prima di fare la decode, quindi faccio la stripe, ... ma naturalmente me li toglie anche a quelli del contenuto html... quindi il json risulta sbagliato.La soluzione "MALATA" che ho in mente è la seguente
1 . raccolgo i dati (da un wysiwsg) --> parso le " sostituendole con un carattere (esempio |)
2. costruisco il json con jscript
3. mando con un updater ad un php (a questo punto il server, mi mette gli slah)
4.nel php stripeslh sul quello che arriva in post
5. decodifico json
6. risostituisco i | con " e salvo
7. prego affinchè nessuno dei miei utenti utilizzi mai un pipe nei suoi testi.C'è qualcuno che ha un'idea migliore?
Grazie fin da ora e buona giornata!!
-
Ok, per la categoria marzulliana, fatti una domanda e datti una risposta ecco la soluzione che ho trovato
1 . raccolgo i dati (da un wysiwsg) -->url encode in javascript (funzione di qualche riga)
2. costruisco il json con jscript
3. mando con un updater ad un php (a questo punto il server, mi mette gli slash)
4.nel php stripeslh sul quello che arriva in post
5. decodifico json
6. urldecode
Fine...E' possibile usare anche la base64 o qualsiasi altra cifratura con andata e ritorno, nel cui generato non ci siano charset strani o virgolette. Ho scelto url encode perchè è suff. per le mie esigenze, la funzione *escape *è nativa js e la codifica genera meno informazione da passare.
-
Ciao riprendo l'argomento che mi sembra mooolto interessante
Elenco le rogne di chi deve trattare con php e Json al tempo stesso !!!1 - La presenza di apici singoli (manda in tilt json)
2 - La presenza di "carriage return" (ritorni a capo) stesso effetto !!La soluzione di caratteri personali per dividere le stringhe (e poi pregare che l'utente non le utilizzi casualmente non la prediligo ....
Elenchiamo qui le funzioni disponibili per una soluzione universale ?
Byez
-
Beh, con l'url encode ti risolvi il problema del Pipe. Quindi direi che è abbastanza universale come soluzione.
Poi puoi aprire un mondo sulla codifica Utf8 (cosa legge mootools) e myslq (cosa scrive mysql sul db)....
Odio i charset. Il mondo senza accenti, sarebbe di fatto, un mondo migliore.
-
Si inrealtà c'è molta confusione !! Ci vorrebbe una bella guida su come districarsi tra i formati (di partenza e di arrivo)
Io ad esempio spesso per gli apici risolvo usando la funzione addslashe di php ... ma dipende da caso a caso ...
byez