Visualizzazione dei risultati da 1 a 10 su 10

Discussione: jquery + ajax + json

  1. #1

    jquery + ajax + json

    Ciao a tutti , non riesco a capire bene come manipolare i campi degli elementi di un file json ottenuti tramite una chiamata ajax. Mi pare di aver capito che al posto di $ajax, con jquery, si può usare anche $getJson (il quale permette,come ajax, di specificare anche parametri ecc..). Innanzitutto è giusto ciò che ho appena scirtto??
    Poi: è giusto farmi spedire dal server (es con php) una stringa unica che rappresenta il file json?
    se uso $getJson dovrebbe automaticamente convertire tale stringa in un file json giusto?

    esempio:

    $.getJSON( url, [data], [callback] )

    // all'url ci sarà un file php che ritorna una stringa che compone il file json, ad esempio:

    { "locali":
    { "bar1": { "name": 'Il bar uno',
    "indirizzo" : "via rosmini 5"}
    "bar2": { "name" : 'Il bar due',
    "indirizzo" : "via manzoni 7"}
    }
    }

    // data servirebbe per specificare parametri, mettiamo il caso che qui non serva
    //callback è la funzione che manipola il file json

    se io volessi, ad esempio, ottenere il nome dei bar, ovvero ottenre il contenuto del campo "name" dei vari elementi del file json (in qesto caso 2 elementi), cosa dovrei scrivere nelle funzione di callback?
    in pratica vorrei sapere qual'è la sintassi per accedere ai campi del file json, come nel linguaggio C potrebbe essere nome_struct.campo

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, questo quello che uso io per manipolare un array ajax
    codice:
    jQuery.ajax({
    	  url: 'http://sito.it/',
    	  type:	'GET',
    	  data: 'parametro1=aaa',
    	  dataType:	"json",
    	  cache: false,
    	  success: function(data) {
    		jQuery.each(data,function(key,val){  
    			alert(data[key].nome);
    		});
    	  }
    	});
    la url coi parametri torna un echo di json_encode($array_classico_php);

  3. #3
    Ma se invece di usare json_encode su un array per trasformarlo in file json, passo direttamente una stringa rappresentate il file json tipo:

    echo { "locali":{ "bar1": { "name": 'Il bar uno',"indirizzo" : "via rosmini 5"}"bar2": { "name" : 'Il bar due',"indirizzo" : "via manzoni 7"}}}

    cambia qualcosa? dal punto di vista semantica intendo, poi è ovvio che il modo che hai usato tu è il più corretto.

    Riguardo alla funzione potresti dirmi in breve a cosa si riferiscono le variabili:

    function(data) {
    jQuery.each(data,function(key,val){
    alert(data[key].nome);
    });


    data?
    key?
    val?
    nome? che forse sarebbe "name", ovvero il campo del file json

  4. #4
    Riguardo alla mia prima domanda dell'ultimo messaggio, ovvero se cmabia qualcosa passare un file json con echo direttamente, attendo una risposta...riguardo al resto del mio ultimo messaggio, ripongo la domanda ad un caso più generale e più chiaro:

    se ad esempio da una chiamata ajax mi ritorna il seguente file json:

    { "negozi":
    { "negozio1" : { "nome" : 'trony', "tel":08897},
    "negozio2" : { "nome" : 'mediaworld', "tel":99877}
    }
    }

    e nel codice html ho un <div id="risultato"></div>


    se voglio stampare a video il campo "nome" del primo negozio, ovvero trony, dovrò scrivere nel codice javascript che ha effettutato la chiamata ajax:

    success: function(in_arrivo)
    {
    $("#risultato").html(in_arrivo.negozi.negozio1.nom e)
    }

    se invece volessi stampare a video TUTTI i campi "nome" del file json?? so che esiste il costrutto FOREACH, però non saprei come usarlo in questo caso..

    Vi ringrazio in anticipo

  5. #5
    Qualcuno riesce ad aiutarmi? ho provato a cercare sul web la soluzione, il problema è che tutti gli esempi che ho trovato utilizzano file json strutturati ad array, e quindi nel mio caso con:

    negozi[0] indicherei "negozio1"
    negozio1[1] indicherei "08897"

    e quindi basterebbe usare in ciclo for, e mettere al variabile all'interno delle partesi quadre [] per scorrere dinamicamente gli elementi degli array

    invece nel mio caso DEVO usare file json strutturati come il mio esempio (nel mio caso sono più comlessi dell'esempio che ho riportato qui, ma mi basta farmi un idea), ovvero con sole paretesi graffe {{{ }}}

    non ho neanche capito molto bene cosa cambia dal punto vista strutturale..spero qualcuno possa aiutarmi

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    la prima cosa che mi viene in mente:

    codice:
    for(el in json.negozi){
    	alert(json.negozi[el].nome);
    	alert(json.negozi[el].tel);
    }
    ho preso d'esempio il json che hai postato sopra... per quanto riguarda la prima domanda in teoria non dovrebbe cambiare nulla.

  7. #7
    Ti ringrazio tantissimo! sei la mia salvezza, era da giorni che aspettavo quancuno che rispondesse, e la tua soluzione funziona perfettamente!!
    Spero di non avere ulteriori problemi!
    grazie ancora

  8. #8
    Sempre riguardo all'esempio che avevo scritto, come faccio ad ottenre gli ID di ogni struttura della stringa, ovvero "negozio1" e "negozio2"?? ho provato vari modi ma non riesco

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660


    li hai già, vengono salvati nella variabile el

    for(el in json.negozi){
    alert(el);
    }

  10. #10
    Si in effetti non ci avevo pensato

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.