Scritto da davidonzo il 04/02/2008, in OpenSource, Web, Tutorial

Solo un piccolo improve della funzione JavaScript che prepara i dati per l'invio via AJAX degli elementi compresi in un form.

 

Nella funzione PreparaDati() scritta nell'articolo linkato ci sono non poche limitazioni. Vediamole:

 

function PreparaDati(){
  stringa = "";
  var form = document.forms[0];
  var numeroElementi = form.elements.length;
 
  for(var i = 0; i < numeroElementi; i++){
    if(i < numeroElementi-1){
      stringa += form.elements[i].name+"="+encodeURIComponent(form.elements[i].value)+"&";
    }else{
      stringa += form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
    } 
  }
}

 

La variabile form manda in detect la prima form trovata nella pagina processata. Tale funzione non è utilizzabile per pagine con più form.

Altro limite è il fatto di non poter scegliere quali dati inviare. Nel momento in cui si avvia la funzione, tutti gli elementi vengono inviati e compresi nella variabile stringa.

 

Adesso riscriveremo la funzione in modo tale che si possa scegliere quale form processare e quali dati inviare, senza toglierci la possibilità di inviare tutti i dati in default.

 

var ele = new Array();
function PreparaDati(nome,ele){
  stringa = "";
  var form = document.forms[nome];
   if(ele){
    var numeroElementi = ele.length;
    for(var i = 0; i < numeroElementi; i++){
     if(i < numeroElementi-1){
      stringa += ele[i]+"="+encodeURIComponent(form.elements[ele[i]].value)+"&";
    }else{
      stringa += ele[i]+"="+encodeURIComponent(form.elements[ele[i]].value);
    }
   }
  }else{
    var numeroElementi = form.elements.length;
    for(var i = 0; i < numeroElementi; i++){
     if(i < numeroElementi-1){
      stringa += form.elements[i].name+"="+encodeURIComponent(form.elements[i].value)+"&";
    }else{
      stringa += form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
    }
   }
  }
}

 

Come potete vedere ora la funzione è parametrata. La variabile "nome" indica l'attributo name della form di cui si vuole preparare i dati per l'invio. Il parametro è obbligatorio.

La variabile "ele" è un array contenente gli elementi del form da inviare. Il parametro può essere false.

 

Se la nostra form ha attributo name = "myForm" e vogliamo inviare tutti gli elementi di questa, ci basterà scrivere:

 

PreparaDati('myForm',false);

 

Se invece vogliamo inviare i campi "nome", "cognome", evitando di inviare il "telefono", scriveremo:

 

PreparaDati('myForm', Array('nome','cognome'));

 

Facile, no?! :-)

Hai trovato l'articolo interessante?
Sottoscrivi il Feed RSS per essere informato automaticamente degli ultimi aggiornamenti!
 
.Commenti rss
# 1
Grazie delle dritte!
Di Mondo Libero  (Inviato il 20/02/2008 @ 09:35:39)
# 2
Pregu :)
Di davidonzo  (Inviato il 20/02/2008 @ 14:30:35)
# 3
Ciao davidonzo,
ho un piccolo grande problema con lo script per l'invio dei dati con metodo post.

Se utilizzo lo script in ajax, non mi preleva i dati da un form per la registrazione (valore di radio button, input text, etc..); se la funzione non va, quindi mi apre una nuova pagina o viene eseguita male, i dati li preleva correttamente e li inserisce nel database.

Sapresti consigliarmi o aiutarmi nella risoluzione del problema?
Di A35G  (Inviato il 01/04/2008 @ 10:32:00)
# 4
tutto o.k.
Di Anonimo  (Inviato il 18/08/2008 @ 18:41:09)


I commenti possono essere moderati.
Se non lo vedi comparire subito non reinserirlo più volte.
Grazie per la gentile collaborazione.