PHP [GUIDA] Ajax jquery e php, gestire risposte tramite json

Stato
Discussione chiusa ad ulteriori risposte.

__Swoller

Utente Gold
29 Giugno 2011
869
32
285
347
Ultima modifica:
Mi è venuto in mente di realizzare questa piccola guida per mostrare alcuni metodi di come gestire i dati tramite json utilizzando l'ajax di jquery e il php dato che mi è stato molte volte utile

Bene, quali sono i vantaggi? Il vantaggio è principalmente la possibilità di trasferire e interpretare strutture di dati in modo decisamente migliore in confronto ad una suddivisione manuale che richiederebbe più tempo.

Ecco alcuni esempi di utilizzo

Codice:
    function AjaxJSON(data){
        
        $.ajax({
            type: 'GET', //get o post a seconda di come volete gestire i dati inviati
            url: 'json.php',
            data: data,
            success: function(json){
                json = jQuery.parseJSON(json);
                $('#risposta').html("Valore: "+json.valore);
            }
        });
    }
PHP:
$array = array(    'prova' => 'test',    'valore' => 'ciao');

echo json_encode($array);

Codice:
    function AjaxJSON(id){
        
        $.ajax({
            type: 'POST',
            url: 'json.php',
            data: 'id='+id,
            success: function(json){
                json = jQuery.parseJSON(json);
                $('#risposta').html("User: "+json.user+"<br> Mail: "+json.mail+"<br> Altro: "+json.altro);
            }
        });
    }

PHP:
$m = mysql_query("SELECT * FROM users WHERE id=".(int)$_POST['id']) or die(mysql_error());

echo json_encode(mysql_fetch_array($m)); //passo i dati direttamente come array

Codice:
    function AjaxJSON(dati){
        
        $.ajax({
            type: 'POST',
            url: 'json.php',
            data: dati,
            success: function(json){
                json = jQuery.parseJSON(json);
                $('#risposta').html("Dati primari: "+getData(json.dati_primari)+"<br> Dati secondari: "+getData(json.dati_secondari)+"<br>Dati finali: "+getData(json.dati_finali));
            }
        });
    }
    
    function getData(jsn){
       var end='';
       for(var i=0; i<jsn.length; i++)
           end += (i!=0)?'-'+jsn[i]:jsn[i]; //controllo che non sia 0 per mettere il segnetto divisore
       
       return end;
    }

Ricordo che puo essere interpretato come array nel caso manchi la chiave

PHP:
$array = array(    'dati_primari' => array('ciao','lol','asd'),    'dati_secondari' => array('cane','gatto','volpe'),    'dati_finali' => array('prova','test','end'));

echo json_encode($array);

In questi esempi ho fatto in modo che si vedessero i differenti modi di utilizzo, dal riportare i valori di una query all'interpretare differenti array trasformati

Ora possiamo anche fare l'inverso, ma non è molto utile dato che è meglio passare i valori come variabili direttamente

Codice:
    function AjaxJSON(){
        
        var json= '{"prova" : "lol","prove" : ["prima","seconda","terza"]}';
        $.ajax({
            type: 'POST',
            url: 'json.php',
            data: 'json='+json,
            success: function(result){
                $('#risposta').html("Valore prova: "+result);
            }
        });
    }
PHP:
$result = json_decode($_POST['json']);

echo $result->prova;

Se ho dimenticato qualcosa o commesso qualche errore ditemelo :\
 
Stato
Discussione chiusa ad ulteriori risposte.