• User Attivo

    Si nei logs trovo la stringa sempre com'era .... :mmm:

    Bah a naso direi che c'è qualcosa che non và nel formato stringa durante l passaggio dal Javascript al PHP .... mmm...


  • User Attivo

    Uhmm noioso così!!!

    Sto leggendo un po' la documentazione, ho trovato questo:

    On one server I use (FreeBSD 6.3; PHP 5.2.6 as module in Apache 2.2.10), PHP was compiled with the '--disable-all' configuration option. Consequently, there exists a secondary configuration file -- /usr/local/php5/etc/extensions.ini -- in which the line

    ; extension=json.so

    must be uncommented (delete the semicolon) and Apache restarted for these functions to be available.
    Comunque,
    prova così:
    [php]
    $json= json_encode('{"titolo":"ciao", "autore":"umberto eco"}');
    $obj = json_decode($json);
    echo $obj->titolo oppure $obj->{'titolo'}
    [/php]Queste informazioni sono reperibili qui:

    1. it2.php.net/manual/en/json.installation.php;
    2. it2.php.net/manual/en/function.json-last-error.php;

    Ciao


  • User Attivo

    prova così:

    Codice PHP:
    $json= json_encode('{"titolo":"ciao", "autore":"umberto eco"}');
    $obj = json_decode($json);
    echo $obj->titolo oppure $obj->{'titolo'}

    Mi torna vuoto .... :(): come prima. Sai una cosa stò testando il tutto localmente (Php 5.2.9) perchè aruba ha ancora la 4.4.9 Json non esiste, quindi le modifiche eventuali al php.ini le testo in locale e poi devo pregare che siano settate bene sui servers di aruba !!! Giusto ?

    1. it2.php.net/manual/en/function.json-last-error.php;
      😄 Siamo sulla stessa strada ... L'ho provato sembra non riconoscere la funzione :bho:

    Grazie mille comunque vada per la pazienza !!!!


  • User Attivo

    :(): ... mi stà sorgendo un dubbio atroce !!!!

    1. json_decode() non dà i risultati attesi
    2. json_last_error() dà errore "Call to undefined function json_last_error()"

    .... vuoi vedere che nel mio php 5.2.9 manca la libreria Json ? Se sì come la installo :mmm: ?!?!?

    thanks all

    dubbio sfatato:

    if(function_exists('json_encode')){echo 'ok json_decode installato';}
    

  • User Attivo

    Ciao Gandalf,
    se hai PHP > 5.xx allora le hai.

    E' più probabile che siano inibite e quindi prova a vedere se nel php.ini
    devi de-commentare la riga
    [php]
    ; extension=json.so
    [/php]Ciao


  • User Attivo

    @mirkoagrati said:

    E' più probabile che siano inibite e quindi prova a vedere se nel php.ini
    devi de-commentare la riga
    [php]
    ; extension=json.so
    [/php]Ciao

    ho cercato il file php.ini nel mio PC, poi con blocco note ho aperto il contenuto e ho cercato la stringa "json", l'unico risultato è questa riga:
    ;extension=php_json.dll

    mi devo preoccupare ?:?

    ho decommentato la riga in questione, ho riavviato Apache e non è cambiato nulla !!!!


  • User Attivo

    Ciao Gandalf,
    hai riavviato apache?
    E' essenziale perchè il php.ini è caricato alla partenza.

    Ciao


  • User Attivo

    @mirkoagrati said:

    prova così:
    [php]
    $json= json_encode('{"titolo":"ciao", "autore":"umberto eco"}');
    $obj = json_decode($json);
    echo $obj->titolo oppure $obj->{'titolo'}
    [/php]
    Ciao

    mirko modificando di poco il tuo codice sopra funziona la prova che mi hai suggerito così (togliendo l'encode del json)

    $json= '{"titolo":"ciao", "autore":"umberto eco"}';
    $obj = json_decode($json);
    echo $obj->titolo
    
    

    mi torna la stringa "ciao".

    però ho ritestato il mio codice :mmm: ma non funziona ancora 😢😢😢


  • User Attivo

    Eppur si muove (Archimede)
    Dunque nel primo codice che hai postato non andava bene il doppio apice appena prima della parentesi quadra dell'array: togli i doppi apici e dovrebbe essere corretto.

    Ciao


  • User Attivo
    Eppur si muove (Archimede) 
    ``` :D
    
    Beh sai che faccio (peccato non c'abbia pensato prima)
    incollo la stringa del *console.log()* nel codice php
    
    

    $json_str=('{"libro":[{"titolo":"rrrr","pagine":"299.5","Dat":"31/8/2009","Com":"lascia un commento..."}]}');
    $obj=json_decode($json_str);
    echo 'titolo='.$obj->titolo;

    
    e cosa ne ricavo ... :cry: nulla sempre vuoto !!!!! arghhhhh
    
    mentre se rettifico la stringa così:
    

    $json_str=('{"titolo":"rrrr","pagine":"299.5","Dat":"31/8/2009","Com":"lascia un commento..."}');
    $obj=json_decode($json_str);
    echo 'titolo='.$obj->titolo;

    
    funziona 
    
    Ma nel mio caso specifico ho bisogno di -UN- Titolo e una serie (array) di pagine/date/commenti .... come posso ?
    
    thanks

  • User Attivo

    Non saprei,
    la sintassi json che utilizzi mi pare corretta;

    prova a vedere se c'è qualche patch o qualche nota sul sito degli sviluppatori,
    mi sembra che su php.net nella sezione json ci siano i contatti.

    Buona Fortuna Gandalf


  • User Attivo

    Mirkoagrati grazie mille lo stesso per la tua disponibilità e i preziosi consigli 😄 grazie a te perlomeno ho una stringa funzionante da cui iniziare a capire dove sbaglio !!!

    Ciao.
    gandalf


  • User Attivo

    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 !!! :ciauz:

    Domandina come accedo ai valori dell'array "capitoli" ?

    byez


  • User Attivo

    Nessun problema,
    è stato un piacere !

    A presto


  • User Attivo

    Perfetto ... funziona tutto se faccio fare il json_decode manualmente (impostando la stringa a mano) ma se ricavo la stringa dal $_POST[] non và :mmm:

    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


  • User Attivo

    Ciao Gandalf,
    scusa se non ti ho risposto per le proprietà dei capitoli: me la ero persa :mmm:

    Comunque,
    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.


  • User Attivo

    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


  • User Attivo

    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


  • User Attivo

    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!!


  • User Attivo

    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.