2010-03-08 16 views

Respuesta

29

Usted puede echar un vistazo a la función serializeArray:

$('#form_id').serializeArray() 
+0

muy útil, gracias por esta joya! –

76

¿Has probado "serializeArray"? Eso te da una variedad de nombres y valores. Se podría convertir eso en un objeto si se quería:

var paramObj = {}; 
$.each($('#myForm').serializeArray(), function(_, kv) { 
    paramObj[kv.name] = kv.value; 
}); 

(Voy a tener que volver a comprobar lo que jQuery hace con matrices, yo creo que los codifica como valores de matriz de JavaScript, pero yo m no es 100% seguro.)

editar ah no, no configura los parámetros multivalor como matrices: obtiene repeticiones del mismo nombre. Por lo tanto, el código de maquillaje de un objeto debe tener este aspecto:

var paramObj = {}; 
$.each($('#myForm').serializeArray(), function(_, kv) { 
    if (paramObj.hasOwnProperty(kv.name)) { 
    paramObj[kv.name] = $.makeArray(paramObj[kv.name]); 
    paramObj[kv.name].push(kv.value); 
    } 
    else { 
    paramObj[kv.name] = kv.value; 
    } 
}); 

(. O algo por el estilo; probablemente podría exprimir un poco)

+2

alternativa: http://github.com/macek/jquery-serialize-object – younes0

Cuestiones relacionadas