Devo scrivere uno script AJAX che mi permetta di includere in un div della pagina corrente il contenuto presente in un file php...mi date qualche dritta?
Devo scrivere uno script AJAX che mi permetta di includere in un div della pagina corrente il contenuto presente in un file php...mi date qualche dritta?
un esempio di script ajax , è anche possibile includere variabili di invio, in questo esempio variabili url e title. La variabile file_php è il file.php di invio.
utilizzerai la variabile risposta per riempire il div....:Codice HTML:<script type="text/javascript"> function chiama_ajax_html(file_php,url,title) { var res = $.ajax({ type: "POST", url: file_php, data: "url="+encodeURIComponent(url)+"&title="+encodeURIComponent(title), async: false }).responseText; return res; } //x richiamare la funzione ajax: var risposta=chiama_ajax_html('esempio.php','http://esempio.it','Esempio'); </script>
Codice HTML:<script type="text/javascript"> $(document).ready(function(){ $('#id_del_div').html(risposta); }); </script>
Ultima modifica di EuroSalute : 20-04-2012 alle ore 18.28.12 Motivo: più info...
LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org
VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
FAI IL TEST CON L'ANALISI VINCITE
Nota che gli script sopra dipendono da 35KB di libreria jQuery, o simile. Se vuoi farne a meno, esistono librerie più leggere, addirittura puoi farlo con una singola funzione.
Si, grazie ma cercavo qualcosa di indipendente da altre librerie...una semplice funzione insomma
Non essendo esperto di Javascript non mi è chiarissimo come si utilizza, mi faresti un esempio? Grazie mille!
Ci sono tre aree di codice...dove includo ciascuna?
Si, ma non c'è scritto dove inserirle...
Uhm, in un tag <script type="text/javascript"> ... </script>, la dove vuoi che vengano eseguite.
Se la funzione ti serve in più file, puoi metterla in un file .js a parte ed includerla nell'head delle pagine.Codice HTML:<div id="contenitore"></div> <script type="text/javascript"> /* la definizione della funzione qua */ /* chiamata della funzione */ sendRequest('pagina.php', handleRequest); /* quando arriva il risultato... */ function handleRequest(req) { var writeroot = document.getElementById('contenitore'); writeroot.innerHTML = req.responseText; } </script>
Ultima modifica di dreadnaut : 21-04-2012 alle ore 13.39.00
Allora...ho incluso la definizione della funzione tramite un file .js esterno.
La chiamata della funzione la devo mettere ad esempio sulla proprietà onclick di un elemento html?
ma cosa sono i due parametri della sendRequest?
Il primo è il file da includere? E il secondo?
No, il primo non è il file da includere, è solo l'indirizzo (URL) a cui effettuare la richiesta, la cui risposta verrà data in pasto alla funzione che hai specificato nel secondo parametro, che potrà eventualmente modificare l'albero del documento inserendo la porzione di documento appena ottenuta.
Mi faresti dunque un esempio di come effettuare la chiamata?
Il codice che ha proposto Dreadnaut è praticamente già pronto, qual'è il problema?
Il problema è intanto...posso anche lasciare pagina.php ma che contenuto deve avere questo file?
File? Che file? E cosa ci sarebbe in questa pagina.php? Scusa, ma non so come stai strutturando il tutto.
pagina.php abbiamo detto che è il primo parametro della funzione, cioè l'indirizzo a cui effettuare la richiesta. Dentro a pagina.php però cosa deve esserci?
Il file puoi chiamarlo come vuoi, quello è solo un nome di esempio. Ci devi piazzare ciò che deve venire inserito nella pagina, non deve essere quindi un documento HTML completo, ma una sola porzione. È esattamente come hai scritto tu nel primo messaggio: viene incluso nel div ciò che genera come risposta lo script PHP.
Ah ma io ho scritto "il primo è il file da includere?" e tu mi hai risposto "no"
Comunque...non devo specificare anche in che punto della pagina includermelo?
La funzione sendRequest non lo include, effettua solo la richiesta, è la funzione specificata nel secondo parametro che si occupa di questo. Di per sé sendRequest non modifica l'albero del documento.
La porzione di documento così ottenuta viene inserita come contenuto dell'elemento avente come id contenitore, sovrascrivendo qualsiasi altra cosa ci fosse in precedenza.
Ok perfetto quindi devo avere un div nella pagina da cui effettuo la chiamata che abbia come id "contenitore"?
Esattamente.
Tutto funzionante, grazie a entrambi! :)
----------------
Altro dubbio...se volessi trasformare l'id "contenitore" in un parametro da passare ogni volta che richiamo la funzione come dovrei modificare il codice?
Ultima modifica di andreafallico : 22-04-2012 alle ore 16.13.56
Puoi usare una cosa come:oppureCodice:function load(URL, element){ sendRequest(URL, handleRequest); function handleRequest(req){ element.innerHTML = req.responseText; } }
A seconda dell'esigenza. Alla prima devi fornire URL e oggetto rappresentante l'elemento in cui inserire la risposta del server, nella seconda funzione invece il secondo parametro è una stringa rappresentante l'id dell'elemento.Codice:function load(URL, elementId){ sendRequest(URL, handleRequest); function handleRequest(req){ document.getElementById(elementId).innerHTML = req.responseText; } }
cioe' definisco una funzione dentro ad un'altra funzione?
Ci sarebbe un alternativa?
Perché? Qual'è il problema?
Non mi piace l'idea di inserire la definizione di una funzione all'interno della definizione di un'altra funzione...