passaggio dati json
- Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 1 mese fa da jqueryitalia.
- AutorePost
- 29 Marzo 2013 alle 18:42 #4482dino moserPartecipante
anzitutto ringrazio per l’attenzione che dedicate a quelli come me “poveri principianti, nonostante l’età”
stavo provando a progettare un database per la gestione anagrafica dei ragazzi di una scuola: volevo fare tutto in maniera semplice (per chi lo usa) attraverso una interfaccia grafica a 3 div: il menu sopra con l’elenco classi, menu a sinistra con l’elenco ragazzi che si “aggiorna” cliccando sulla classe e la pagina centrale con l’anagrafica del ragazzo (con un effetto fade al clik sul nome).
eccomi al dunque, utilizzando una serie di tutorial ho fatto 2 pagine: 1 index.php dove verranno caricati tutti i dati e una json.php
index.php
————————————–jQuery(function(){ jQuery('ul li').click(function(){ var contenuto_lista = this.id; jQuery.post('json2.php', {id_classe: contenuto_lista}, mostra_ragazzo, 'json'); }); }); function mostra_ragazzo(data){ jQuery(function(){ jQuery('#lista').html(data); }) }
<?php require 'conn/conn.inc'; $sql = mysql_query('select * from anno_scolastico'); echo '<ul>'; while($row = mysql_fetch_array($sql)){ echo '<li id="' . $row['id_classe'] . '">'. $row['nome'] .'</li>'; } echo '</ul>'; echo '<div id="lista"></div>'; ?>
json.php
————————————–$prova = $_POST['id_classe']; $sql_ragazzi = "SELECT anagrafica.id, anagrafica.nome, anagrafica.cognome, anno_scolastico.id_classe, anno_scolastico.anno_inizio FROM anno_scolastico INNER JOIN (anagrafica INNER JOIN collegamento ON anagrafica.id = collegamento.id_ragazzo_c ) ON anno_scolastico.id_classe = collegamento.id_classe_c WHERE (((anno_scolastico.id_classe)= $prova)) LIMIT 0, 30 "; $query_2 = mysql_query($sql_ragazzi); $rows = array(); while ($row = mysql_fetch_array($query_2, MYSQLI_ASSOC)) { $rows[] = array( 'id' => $row['id'], 'cognome' => $row['cognome'], 'nome' => $row['nome'], ); } echo json_encode($rows);
——————————————————
se alla variabile $prova = $_POST[‘id_classe’]; sostituisco $prova = 5; e la controllo sul browser
vedo che l’array $rows è pieno infatti mi da: [{“id”:”2″,”cognome”:”pierino”,”nome”:”paolino”},{“id”:”22″,”cognome”:”tex”,”nome”:”willer”},{“id”:”184″,”cognome”:”nik”,”nome”:”carter”}]
perchè non me lo carica in index?
grazie30 Marzo 2013 alle 09:13 #4485jqueryitaliaAmministratoreEccomi qui prof 😀
Intanto ti prego, quando inserisci il codice (di qualsiasi tipo) di seguire le istruzioni che trovi poco prima dell’area di inserimento del post. In secondo luogo di attendere una volta che hai premuto invia altrimenti vengono creati n post tutti uguali.
Non preoccuparti comunque: stavolta ho provveduto io a sistemare 😉Per quanto riguarda il tuo problema è di semplice soluzione: non stai passando alcun valore alla funzione jQuery.post perchè hai assegnato a “contenuto_lista il” valore “this.id” che non ha alcun significato, anzi dovrebbe generarti un errore javascript.
Devi scrivere invece:
contenuto_lista = jQuery(this).attr("id");
30 Marzo 2013 alle 09:47 #4490dino moserPartecipantevar contenuto_lista = jQuery(this).attr("id");
in questo modo mi da ancora errore: nella console di chrome vedo:
Uncaught Error: NotFoundError: DOM Exception 8 jquery.min.js:12 o.extend.clean jquery.min.js:12 o.fn.o.domManip jquery.min.js:12 o.fn.o.append jquery.min.js:12 o.fn.o.html jquery.min.js:12 (anonymous function) index2.php:17 o.fn.extend.ready jquery.min.js:19 o.fn.o.init jquery.min.js:12 l.jQuery.l.$ jquery.min.js:12 mostra_ragazzo index2.php:16 I jquery.min.js:19 N
spero di aver fatto giusto in questo post. (ps. per link testuale intendi “plain text”?
scusa l’ignoranza!30 Marzo 2013 alle 10:08 #4491jqueryitaliaAmministratorePer link testuali intendo CSS se scrivi codice css, HTML se scrivi codice HTML, JAVSCRIPT se scrivi codice javascrip, e così via 😉
Inoltre prima di cliccare sul link devi selezionare tutto il codice cui applicare la regola.Vi sono ancora un paio di errori che non avevo notato:
(1) in jQuery.post il dato va passato come stringa: quindi devi scrivere:jQuery.post('json.php', contenuto_lista, mostra_ragazzo(data), 'json');
(2) la funzione “mostra_ragazzo” riceve un array json sul quale dovresti eseguire il parsing (un’esempio di parsing ce l’hai nel tuo primo post cui avevo risposto). Quindi:
function mostra_ragazzo(data){ var returnData = ''; if ( data.length > 0 ) { var i = 0; returnData += '<ul>'; for ( i = 0; i < data.length; i++) { returnData += '<li>'+ data[i].nome +' '+ data[i].cognome +'</li>'; } returnData += '</ul>'; } else { returnData += 'Nessun risultato trovato.'; } jQuery('#risultato').html( returnData ); }
- AutorePost
- Devi essere connesso per rispondere a questo topic.