Risposta Server | php Array to js
Risposta Server | php Array to js postato il 05/03/2009 20:46:36 nel forum programmazione, open source e hosting
Salve a tutti ^^'
sono tornato da un paio di giorni a guardare un vecchio progetto, una raccolta di funzioni utili in javascript che avevo messo insieme un pò di tempo fa.
Ho aggiunto ora delle funzioni in modo da utilizzare Ajax e, con stupore, ho combinato qualcosa di funzionante.
Tuttavia avrei intenzione di migliorare il tutto, smettendo di far ritornare al server una pagina intera limitando il tutto ad un array. Ora il problema è:
Posso ritornare un array php e successivamente utilizzarlo in Javascript per popolare un elemento che creo al volo?
ho cercato un pò su internet ma ho trovato cose inutili al mio caso ^^
posto la funzione che gestisce la risposta
function handler(){
if (req.readyState == 4 && req.status == 200) {
risposta = req.responseText;
if(risposta){
// esistenza target della richiesta
if($(targetDestinazione)){
// svuota target
$(targetDestinazione).innerHTML = '';
//creo il contenitore della risposta del server
nuovaDiv = document.createElement('div');
nuovaDiv.setAttribute('id',destinazione);
nuovaDiv.innerHTML = risposta;
//infilo nel DOM il contenitore con la risposta
$(targetDestinazione).appendChild(nuovaDiv);
}
else{
alert('non esiste il target ->'+ targetDestinazione +'<-');
}
}
else{
alert("Non c'è risposta dal server!");
}
}
}
function $(argomento){
argomento = document.getElementById(argomento);
return argomento;
}
Pagine → 1
05/03/2009 21:01:00 e modificato da blancks il 05/03/2009 21:03:27
Da php ritorna le informazioni tutte come una stringa unica separate da virgola, tipo così:
echo "$info1,$info2,$info3,$info4,$info5";
a questo punto prendi il response della chiamata asincrona ed esegui uno split:
var informazioni = http.responseText.split(',');
a questo punto informazioni è un array js contenente tutte le info che hai spedito dal modulo in php.
Poi usi questi dati per popolare quello che ti pare, quando ti pare ;-)
Era questo che volevi sapere o ho capito male xD ?
05/03/2009 21:06:27
blancks ha scritto: Da php ritorna le informazioni tutte come una stringa unica separate da virgola, tipo così:
echo "$info1,$info2,$info3,$info4,$info5";
a questo punto prendi il response della chiamata asincrona ed esegui uno split:
var informazioni = http.responseText.split(',');
a questo punto informazioni è un array js contenente tutte le info che hai spedito dal modulo in php.
Poi usi questi dati per popolare quello che ti pare, quando ti pare ;-)
Era questo che volevi sapere o ho capito male xD ?
sono un babbo xD
mi ero messo in testa di dover passare proprio un Array php quando potevo fare facilmente così ._.
grazie xD
06/03/2009 13:53:46
clemence ha scritto: json.
usa json
Beh, dipende, se è per una stupidagine è inutile scomodare json.
Ma questo deve stabilirlo lo sviluppatore in base alle esigenze ;-)
06/03/2009 14:58:54
Json non scomoda nulla, fa parte di javascript (a differenza per esempio di xml).
Ti consiglio di usare json, anche perchè dividendo con gli split si rischia sempre di creare pasticci. Ad esempio un qualsiasi malintenzionato, se volesse mandarti a monte un programmino in ajax, potrebbe semplicemente controllare l'elemento che esegue lo split e ripresentarlo nell'input (se si parla di input dinamico e non di output, ovviamente).
06/03/2009 15:38:58
darkside of breakfast ha scritto: Json non scomoda nulla, fa parte di javascript (a differenza per esempio di xml).
Ti consiglio di usare json, anche perchè dividendo con gli split si rischia sempre di creare pasticci. Ad esempio un qualsiasi malintenzionato, se volesse mandarti a monte un programmino in ajax, potrebbe semplicemente controllare l'elemento che esegue lo split e ripresentarlo nell'input (se si parla di input dinamico e non di output, ovviamente).
è output :D
ma comunque ora vedo di documentarmi meglio su json, per ora so solo che è una notazione "ad oggetti" o qualcosa di simile ._.
07/03/2009 16:36:39
inserita anche una funzione che gestisce sia il get che il post, nel post si possono inserire i vari parametri nella forma
nomeVariabile1,valore1,nomeVariabile2,valore2,...,nomeVariabileN,valoreN
posto la funzione, se c'è qualche accorgimento da fare.. consiglio per migliorare o semplicemente constatare che non ha senso (xD) fatemi sapere.
function reqAjax(method, url, nuovoCont, targetCont, data) {
destinazione = nuovoCont;
targetDestinazione = targetCont;
if(method == 'get' || method == 'GET'){
req = assegnaXMLHttpRequest(handler);
req.open("GET",url);
req.setRequestHeader("connection", "close");
req.send(null);
}
else if(method == 'post' || method == 'POST'){
querystring = "";
arraydata = data.split(',');
for(i=0;i<arraydata.length;i=i+2){
if(i==(arraydata.length-2)){
querystring = ""+ querystring +""+ arraydata[i] +"="+ arraydata[i+1] +"";
}
else{
querystring = ""+ querystring +""+ arraydata[i] +"="+ arraydata[i+1] +"&";
}
}
req = assegnaXMLHttpRequest(handler);
req.open("POST", url, true);
req.setRequestHeader("content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("connection", "close");
req.send(querystring);
}
}
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Project Entropy ↗
Foundation Galactic Frontier ↗
Storie di Agarthi ↗
Tiles Survive ↗
Raja Dunia ↗
Cafuné ↗
Hero Wars ↗
Wuthering Waves ↗
Exclusive Villa GdR ↗