inputs - serializearray jquery php
¿Cómo accedo a los valores creados por serializeArray en JQuery? (8)
Con uderscore.js
, así es como podemos hacerlo:
var serializedArray = $(''form#spiderman-application'').serializeArray();
var serializedObject = _.object(
_.pluck(serializedArray, ''name''),
_.pluck(serializedArray, ''value'')
)
console.log(serializedObject);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
<form id="spiderman-application">
<legend>Application Form</legend>
<input name="./fname" value="Peter" />
<input name="./lname" value="Parker" />
</form>
Buena suerte...
Tengo este HTML:
<form id=''myform''>
<input name=''title'' value=''foo''/>
</form>
Y creo una matriz de objetos de esta manera:
var dataArray = $("#myform").serializeArray();
Ahora, ¿cómo accedo al ''título'' en dataArray? Esto no funciona:
alert(dataArray[''title'']);
alert(dataArray[''title''].val());
Añadiendo esto de todos modos para ayudar a otros en el futuro. Buena manera de inspeccionar rápidamente todos los valores.
var formdata = $( "#myform" ).serializeArray();
var formdata = JSON.stringify(formdata);
alert (formdata);
Alertas de serializeArray de entradas en myDiv (nota: ¡el selector de :input
incluirá también etiquetas de selección y área de texto!):
//alert(fData.length) // how many inputs got picked up
var fData=$("#myDiv :input").serializeArray();
var msg="";
for(var i=0;i<fData.length;i++){
var raKy=Object.keys(fData[i]);
msg+="/n"+raKy[0]+":"+eval("fData[i]."+raKy[0])+" "+raKy[1]+":"+eval("fData[i]."+raKy[1]);
}
alert(msg);
Ejecutar console.log(dataArray);
, luego abra el inspector de propiedades y verifique la consola. En Chrome, debe hacer clic derecho y seleccionar "Inspeccionar elemento" y luego hacer clic en el ícono "> =" en la parte inferior izquierda, es el segundo desde la izquierda.
En Firefox deberías instalar Firebug y hay una pestaña llamada "Consola"
No estoy seguro de si está disponible en IE, probablemente algo en las herramientas de desarrollo (presione f12 ) pero no recomendaría desarrollar en IE.
De todos modos, esto mostrará el objeto de una manera que le permita navegar y ver los valores de cada elemento. De esa manera, puedes usar esto para descifrar cómo acceder a los valores :)
Buena suerte
Puede hacer un bucle, como @Tom tiene ... o si está accediendo a más de uno, sea un poco más eficiente y realice un bucle una vez, creando un objeto como este:
var dataArray = $("#myform").serializeArray(),
len = dataArray.length,
dataObj = {};
for (i=0; i<len; i++) {
dataObj[dataArray[i].name] = dataArray[i].value;
}
Luego puedes acceder a él como quieras, por ejemplo:
alert(dataObj[''title'']); //or alert(dataObj.title);
Similar a lo que Nick publicó, pero un poco más limpio.
var dataArray = $("#myform").serializeArray(),
dataObj = {};
$(dataArray).each(function(i, field){
dataObj[field.name] = field.value;
});
Entonces accede de la misma manera
alert(dataObj[''title'']);
añadir / echo / print dataArray[0].name
a un div te dará ''título''
alert(dataArray[0].name);
alert(dataArray[0].value);
Asi que:
for (i=0; i<dataArray.length; i += 1) {
if (dataArray[i].name === "title") {
// do something here...
}
}