2012-06-26 23 views
9

El envío del formulario que estoy usando jQuery para reunir incluyendo archivos de datos y la creación de un objeto FormData de los valores del formulario usando:¿Cómo agregar un valor de matriz a los nuevos FormData?

var formData = new FormData($("form#formid")[0]); 

pero ¿cómo puedo añadir otro valor y es clave para este FormData objeto?

+0

@Esailija necesito para obtener el contenido de la forma incluyendo archivos para enviar con el Ajax, no pensó 'serialize()' pudiera manejar archivos? – Dan

+0

Estaba confundido porque dijiste "matriz". Lo edité para que sea lo que creo que estás preguntando. – Esailija

Respuesta

2

Puede iterar sobre todos los campos del formulario y añadirlos a la FormData muy fácilmente de esta manera:

var formData = new FormData(); 
$("form#edit-account").serializeArray().forEach(function(field) { 
    formData.append(field.name, field.value) 
});​ 
0
$('form').submit(function (e) { 
var data; 

data = new FormData(); 
data.append('file', $('#file')[0].files[0]); 

$.ajax({ 
    url: 'http://hacheck.tel.fer.hr/xml.pl', 
    data: data, 
    processData: false, 
    type: 'POST', 
    success: function (data) { 
     alert(data); 
    } 
}); 

e.preventDefault(); 

});

0
var data = new FormData(), 
    fields = $("#myForm").serializeArray(); 

$.each(fields, function(i, field) { 
    data.append(field.name, field.value); 
}); 
0

También puedes usar FormData.set().

La diferencia entre FormData.set y append() es que si la clave especificada ya existe, FormData.set sobrescribirá todos valores existentes con el nuevo, mientras que append() anexará el nuevo valor al final del conjunto existente de valores.

Sintaxis:

formData.set(name, value); 
Cuestiones relacionadas