Ciao A tutti, spero vivamente che qualcuno mi possa aiutare a risolvere questo problema per me insormontabile.
Comincio ora con l'approcio a Ajax e mi trovo un po in difficoltà.
Cercherò di spiegare al meglio il mio problema:
Devo aggiungere, una serie di campi form dinamicamente senza refresh della pagina alla pressione di un bottone (sono delle persone quindi potrei decidere di aggiungere anche 10 persone riproponendo i campi per 10 volte), e fin qui tutto ok. I dati inseriti dall'utente vengono salvati su un database mysql.
I problemi sorgono nel momento della modifica.
Controllo quante "persone" sono state inserite e con un ciclo richiamo tante volte i campi form quante sono le persone e faccio visualizzare i relativi dati inseriti.
A monitor visualizzo solo l'ultima persona inserita e per tutte le altre mi compare un errore "[object XMLHttpRequest]"
ecco le funzioni che uso:
// Visualizzazione aggiunta Soggetto
function add_sbj(tipo_sog,stg)
{
// Div attuale
divnow=parseInt(document.getElementById("nuovi_soggetti").childNodes.length);
nuovo_elemento = document.createElement("div");
nuovo_elemento.setAttribute("id","sog_"+parseInt(divnow+1));
nuovo_elemento.setAttribute("class","sogg_vis");
if (window.XMLHttpRequest) {
estrai_sog= new XMLHttpRequest();
estrai_sog.onreadystatechange = ricevi_sog;
estrai_sog.open("GET", "pg_fornitori/js_add_soggetto.php?id_sog="+ (divnow+1)+"&stg="+stg+"&tipo_sog="+tipo_sog ,true);
estrai_sog.send(null);
}
else if (window.ActiveXObject) {
estrai_sog= new ActiveXObject("Microsoft.XMLHTTP");
if (estrai_sog) {
estrai_sog.onreadystatechange = ricevi_sog;
estrai_sog.open("GET", "pg_fornitori/js_add_soggetto.php?id_sog="+ (divnow+1)+"&stg="+stg+"&tipo_sog="+tipo_sog ,true);
estrai_sog.send();
}
}
nuovo_elemento.innerHTML=estrai_sog;
document.getElementById("nuovi_soggetti").appendChild(nuovo_elemento);
obj=eval("document.getElementById(\"sog_"+parseInt(document.getElementById("nuovi_soggetti").childNodes.length)+"\")");
obj.style.background="#EEE";
obj.style.width="100%";
obj.style.border="1px solid DDDDDD";
obj.style.padding="5px";
obj.style.margin="10px 0 0 0";
}
function ricevi_sog()
{
var sog;
if (estrai_sog.readyState == 4) {
sog=estrai_sog.responseText;
nuovo_elemento.innerHTML=sog;
document.getElementById("nuovi_soggetti").appendChild(nuovo_elemento);
}
}
Il ciclo PHP con cui richiamo il JS è il seguente:
Faccio visualizzare un'immagine trasparente per poter sfruttare la funzione onload e richiamare lo script
foreach(explode('|',$rv['campodb']) as $val)
{
if($val!="")
{
echo'<img src="img/spacer.gif" onload="add_sbj(\'pf\',\''.$val.'\')"/>';
}
}
Per ogni altra delucidazione rimango a vostra disposizione e grazie infinite a chi potrà aiutarmi
Comincio ora con l'approcio a Ajax e mi trovo un po in difficoltà.
Cercherò di spiegare al meglio il mio problema:
Devo aggiungere, una serie di campi form dinamicamente senza refresh della pagina alla pressione di un bottone (sono delle persone quindi potrei decidere di aggiungere anche 10 persone riproponendo i campi per 10 volte), e fin qui tutto ok. I dati inseriti dall'utente vengono salvati su un database mysql.
I problemi sorgono nel momento della modifica.
Controllo quante "persone" sono state inserite e con un ciclo richiamo tante volte i campi form quante sono le persone e faccio visualizzare i relativi dati inseriti.
A monitor visualizzo solo l'ultima persona inserita e per tutte le altre mi compare un errore "[object XMLHttpRequest]"
ecco le funzioni che uso:
// Visualizzazione aggiunta Soggetto
function add_sbj(tipo_sog,stg)
{
// Div attuale
divnow=parseInt(document.getElementById("nuovi_soggetti").childNodes.length);
nuovo_elemento = document.createElement("div");
nuovo_elemento.setAttribute("id","sog_"+parseInt(divnow+1));
nuovo_elemento.setAttribute("class","sogg_vis");
if (window.XMLHttpRequest) {
estrai_sog= new XMLHttpRequest();
estrai_sog.onreadystatechange = ricevi_sog;
estrai_sog.open("GET", "pg_fornitori/js_add_soggetto.php?id_sog="+ (divnow+1)+"&stg="+stg+"&tipo_sog="+tipo_sog ,true);
estrai_sog.send(null);
}
else if (window.ActiveXObject) {
estrai_sog= new ActiveXObject("Microsoft.XMLHTTP");
if (estrai_sog) {
estrai_sog.onreadystatechange = ricevi_sog;
estrai_sog.open("GET", "pg_fornitori/js_add_soggetto.php?id_sog="+ (divnow+1)+"&stg="+stg+"&tipo_sog="+tipo_sog ,true);
estrai_sog.send();
}
}
nuovo_elemento.innerHTML=estrai_sog;
document.getElementById("nuovi_soggetti").appendChild(nuovo_elemento);
obj=eval("document.getElementById(\"sog_"+parseInt(document.getElementById("nuovi_soggetti").childNodes.length)+"\")");
obj.style.background="#EEE";
obj.style.width="100%";
obj.style.border="1px solid DDDDDD";
obj.style.padding="5px";
obj.style.margin="10px 0 0 0";
}
function ricevi_sog()
{
var sog;
if (estrai_sog.readyState == 4) {
sog=estrai_sog.responseText;
nuovo_elemento.innerHTML=sog;
document.getElementById("nuovi_soggetti").appendChild(nuovo_elemento);
}
}
Il ciclo PHP con cui richiamo il JS è il seguente:
Faccio visualizzare un'immagine trasparente per poter sfruttare la funzione onload e richiamare lo script
foreach(explode('|',$rv['campodb']) as $val)
{
if($val!="")
{
echo'<img src="img/spacer.gif" onload="add_sbj(\'pf\',\''.$val.'\')"/>';
}
}
Per ogni altra delucidazione rimango a vostra disposizione e grazie infinite a chi potrà aiutarmi
Ultima modifica: