Problema con array multipli

Elranius

Nuovo Utente
17 Apr 2013
11
0
1
Salve a tutti, ho un problema che non riesco a risolvere.
In pratica ho un array

Codice:
var Tabella = new Array(); 
var elenco_nomi = new Array(); 	
  function Stampa(){   
     $.get("result.php",{ utente: "gm"},            
	function(dati) {				
	   for(i=0;i<dati.length; i++){
	     Tabella[i] = new Array(dati[i].a, dati[i].b);
	     for(j=0;j<dati[i].c.length; j++){
                elenco_nomi [j]= new Array(dati[i].c[j].cognome, dati[i].c[j].nome);
	     }
             Tabella[i].push(elenco_nomi);
	   }
	},"json");
  }

il file json che elaboro ha questa struttura:

[{"a":"valoreA1","b":"valoreB1","c":[{"cognome":"Rossi","nome":"Mario"}]},{"a":"valoreA2","b":"valoreB2","c":[{"cognome":"Verdi","nome":"Franco"}]}]


Sviluppato per una migliore lettura diventa:

Codice:
dati[]=[
            {"a":"valoreA1"
              "b":"valoreB1"
              "c": Array[{ "cognome":"Rossi",
                              "nome":"Mario"}]
            },
            { "a":"valoreA2"
               "b":"valoreB2"
               "c":Array[{ "cognome":"Verdi",
                              "nome":"Franco"},
                           { "cognome":"Rosa",
                               "nome":"Bebbe"}]
            }
           ]

La funzione Stampa() sopra descritta a me sembra funzionare correttamente, nel senso che se alla fine di ogni ciclo faccio un allert(Tabella) i dati mi tornano corretti.

Il problema mi si verifica quando vado ad processare l'array Tabella[] come per esempio:
Codice:
 function Control()
   {
	var boxtext1;
	var i=0;		 
	boxtext1='Tabella['+i+'][0]= '+Tabella[i][0]+ '\n' + 
	             'Tabella['+i+'][1]= '+Tabella[i][1]+ '\n' + 
		     'Tabella['+i+'][2]= '+Tabella[i][2]+ '\n' +
		 		
		     '  Tabella['+i+'][2][0]= '+Tabella[i][2][0]+ '\n' + 
		     '  Tabella['+i+'][2][1]= '+Tabella[i][2][1];


	alert(boxtext1);
	i= i+1;
	var boxtext2; 
	boxtext2='Tabella['+i+'][0]= '+Tabella[i][0]+ '\n' + 
		     'Tabella['+i+'][1]= '+Tabella[i][1]+ '\n' + 
		     'Tabella['+i+'][2]= '+Tabella[i][2]+ '\n' +
				
		     '  Tabella['+i+'][2][0]= '+Tabella[i][2][0]+ '\n' +
		     '  Tabella['+i+'][2][1]= '+Tabella[i][2][1];

	alert(boxtext2);	
}

Mi aspetto un output del tipo:

Primo Allert:
Tabella[0][0]= valoreA1
Tabella[0][1]= valoreB1
Tabella[0][2]= Rossi, Mario
Tabella[0][2][0]= Rossi, Mario
Tabella[0][2][1]= undefined

Secondo Allert:
Tabella[1][0]= valoreA2
Tabella[1][1]= valoreB2
Tabella[1][2]= Verdi, Franco, Rosa, Beppe
Tabella[1][2][0]= Verdi, Franco
Tabella[1][2][1]= Rosa, Beppe

Invece il primo Alert esce cosi:

Tabella[0][0]= valoreA1
Tabella[0][1]= valoreB1
Tabella[0][2]= Rossi, Mario
Tabella[0][2][0]= Rossi, Mario
Tabella[0][2][1]= Rosa, Beppe


Perchè mi ritrovo l'elemento inserito in Tabella[1][2] in Tabella[0][2]?

Il mio sospetto è nell'istruzione Tabella.push(elenco_nomi) come se non inserisse i valori dell'Array elenco_nomi, ma un puntatore. E' possibile?
 
Ciao, il problema sta nella nidificazione del Json.
Io la trovo inutilmente troppo articolata.
Prova a fare semplicemente così:
PHP:
[
   {
      "Nome"          : "Mario",
      "Cognome"     : "Rossi"
   },
   {
      "Nome"            : "Franco",
      "Cognome"       : "Verdi"
   }

]

Per quanto concerne il parsing dei dati con Ajax fai semplicemente:

PHP:
 $(document).ready(
   function(){
      $.getJSON(
         './json.php',
         function(data){
            // cicla l'array
            for(i=0; i<data.length; i++){
              var  dati  ="";
                dati +=  data[i].nome; // accedi al valore Nome
                dati +=  data[i].cognome; // accedi al valore Cognome
               }
           }
        );
     }
  );

Ho inserito la funzione all’interno del metodo ready() di jQuery, il quale si occupa di eseguiro il suo contenuto solamente dopo che il DOM è stato caricato completamente.
Se ti serve puoi fare anche il push dei dati in una variabile chiamata Tabella.
 

Discussioni simili