Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    PHP jsoner ver 0.9 (interscambio dati php->js)

    Salve a tutti!
    Volevo condividere con vuoi una semplice funzione da me creata che prende come argomento un array associativo frutto di un mysql_fetch_assoc(); e restituisce la sintassi per definire un oggetto JSON.

    Esempi di utilizzo:

    in php
    print "var response=".jsoner($ar);
    //dove $ar è qualcosa di simile :>
    array(0=>array("id"=>"3","title"=>"hello world"),
    1=>array("id"=>"6","title"=>"ciao mondo")); il tipico array restituito da mysql_fetch_assoc();
    //e stamperà

    var response= {"0":{"id":"3","title":"hello world"},"1":
    {"id":"6","title":"ciao mondo"};

    In javascript normale, jQuery o altro framework

    eval(responseFromServer); //ritorna l'oggetto "response";
    alert(response.1.title); //crea una finestra di alert con "ciao mondo" ed è possibile usare anche la forma response[1].title

    Ecco il codice sorgente:

    <?php
    //PHP Jsoner 0.9 by resetstudio
    // mysql->php->js data exchange function
    // works with php 4.0+

    function jsoner($ar)
    {
    $res=null;
    $ir=0;
    if(is_array($ar))
    {
    $res="{";
    foreach($ar as $aro)
    {
    $res.="\"$ir\" : {";
    $post_k=array_keys($aro);
    $post_v=array_values($aro);
    for($i=0;$i<= count($post_k)-1; $i++)
    {
    if(is_string($post_v[$i]))
    {
    $res.="$post_k[$i] : \"$post_v[$i]\" , ";
    }
    else $res.="$post_k[$i] : $post_v[$i] , ";
    }
    $res=substr($res,0,-2)."},";
    $ir++;
    }
    if ($res != null)
    {
    $res=substr($res,0,-1)."};";
    }
    }
    return $res;

    }

    ?>


    Antonio ResetStudio

  2. #2
    Non per smorzare l'entusiasmo
    ma esiste la funzione json_decode/encode
    Encode/decode un dato in un formato json
    è un attimo + complicato della tua funzione.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Ehehhe infatti la usavo, ma aveva qualche problemino con i carattari accentati e altri tipi di caratteri, e dopo un pò di workaround e non avendo risolto nulla ho fatto sta piccola funzione.

  4. #4
    Originariamente inviato da Erith
    Ehehhe infatti la usavo, ma aveva qualche problemino con i carattari accentati e altri tipi di caratteri
    anche la tua funzione ... se non usi rawurlencode e/o un charset Unicode friendly (utf-8)


    json_encode e json_decode sono più veloci di serialize ed unserialize ... ed il parsing JSON è, appunto, molto più complicato di quello mostrato nel tuo codice.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Hai ragionissima Andre, ma purtroppo devi fare i conti con l'hosting a basso costo disponibile in italia(php 4.3) che quindi non garantisce un supporto json nativo, pertanto costringendo noi povere bestie risparmiatrici ad usare librerie e classi trovate in rete. Sono daccordo che un parser non può essere paragonata a sta funzioncella, ma utilizzando la classe http://mike.teczno.com/json.html e utilizzando utf8 nel db mi dava errore in fase di encoding comunque. Ho poi notato che eliminando alcuni caratteri dalle stringhe del db tutto fungeva. Ho poi googlato in rete e qualcuno consigliava di salvare nel db i caratteri speciali come entità html, ma io sono sempre dell'idea che i contenuti vadano salvati as it is(portabilità)... Utilizzando questa funzione fino ad adesso non ho avuto problemi e prima di fare un echo, lancio un header() per modificare l'encoding e settarla per visualizzare i caratteri accentati.
    Spero possa essere utile a quelli che come me sono ancora legati al php 4 e hanno i miei stessi problemi...

  6. #6
    Quando manca il supporto a "qualche dll" di solito c'è almeno un posto dove guardare per primo e trovare, solitamente, risposte: Pear

    Ti accorgerai che la classe per encodare/decodare JSON è molto corposa
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Hai ragionissima Andre, ma purtroppo devi fare i conti con l'hosting a basso costo disponibile in italia(php 4.3)
    Questa non la capisco se hai un sito internet perchè lo devi mettere su un host italiano


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  8. #8
    Il problema non è solo la vers. di php, ma anche l'impossibilità di installare estensioni.
    (sapete tutti di che hoster sto parlando)
    Adesso ne ho trovato uno ottimo, italiano, con grande banda e a poco costo, ma non voglio fare pubbl (la ho trovata su un blog che seguo),php 5, 5 terzi livelli inclusi, e un mare di estensioni precaricate. Adesso devo solo superare la paura del cambiamento, la forza d'abitudine che spinge noi italiani a stare a guardare mentre il mondo cambia e si aggiorna...
    il prossimo sito lo hosto li... ho anche Lamp installato su Ubuntu... quasi quasi mi apro la firewall e mi hosto da solo..

    cmq per ora ho questo scriptino, magari faccio un controllo nei values con is_numeric per non mettere le virgolette in output così da evitarmi parseInt in js...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.