Función GetDataForm
27 febrero 2019
Para enviar vía AJAX el contenido de un formulario del cliente al servidor, se necesita crear una cadena de caracteres de pares «variable=valor» separados por el carácter ‘&’ (ampersand). Esa es una tarea muy de tediosa de realizar, especialmente cuando el formulario tiene un número grande de variables para enviar. La función ‘GetDataForm‘ simplifica esta tarea:
valores=GetDataForm(idForm);
Posteriormente, una llamada AJAX al servidor enviando los valores del formulario se realizaría así:
ajaxM.send(valores);
La función sería la siguiente:
var VAL_VERDADERO='1';
var VAL_FALSO='0';
function GetDataForm(f)
{
if(!f)
return "";
var i,j,x;
var cad="";
var val;
var radioNom="";
for(i=0;i<f.length;i++)
{
x=f.elements[i];
if(typeof(x.name)!="undefined" && x.name.length>0)
{
switch(x.type)
{
case "text": case "password": case "hidden": case "textarea":
val=x.value.trim();
break;
case "select-one":
if(x.options.length>0 && x.selectedIndex>=0 && x.selectedIndex<x.options.length)
val=(x.options[x.selectedIndex].value) ?
x.options[x.selectedIndex].value : x.options[x.selectedIndex].text;
else
val="__NO__VAL__";
break;
case "checkbox":
val=(x.checked)?VAL_VERDADERO:VAL_FALSO;
break;
case "radio":
val="";
if(radioNom!=x.name)
{
radioNom=x.name;
j=0;
while(f.elements[radioNom][j] && val=="")
{
if(f.elements[radioNom][j].checked)
val=f.elements[radioNom][j].value;
j++;
}
}
break;
default: //case "button": case "reset": case "submit": case "file":
val="__NO__VAL__";
break;
}
if(val!="__NO__VAL__")
{
if(val!="")
{
if(cad!="")
cad+="&";
cad+=x.name+"="+encodeURIComponent(val);
}
}
}
}
return cad;
}