Eso sucede porque no estás usando correctamente al objeto
FormData
. Puedes crear al objeto sin pasarle un argumento y luego recorres al conjunto de elementos del formulario para añadírselos uno por uno o los añades a todos de una sola vez.
Esta es una forma básica de hacerlo:
Código Javascript
:
Ver originalvar formulario = $("#formNuevoBoletin"),
elementos = formulario.elements,
total = elementos.length,
formData = new FormData();
for (var i = 0; i < total; i++){
if (elementos[i].type == "file"){
var archivo = elementos[i].files;
formData.append(elementos[i].name, archivo[0]);
}
else{
formData.append(elementos[i].name, elementos[i].value);
}
}
//Acá ejecutas al método Ajax
Lo que hago es simple. Primero, tomo al formulario, sus elementos y el total que estos representan, además, creo al objeto
FormData
, luego, recorro al conjunto de elementos del formulario y, en cada iteración, verifico el tipo de elemento de cada uno de ellos. Cuando se trate de un campo de tipo
file
, obtengo al conjunto de elementos que este posea y añado al primero de ellos (suponiendo que solo enviarás un archivo, de lo contrario, tendrás que usar un bucle para ir añadiéndolos) al objeto, caso contrario, es decir, si se trata de otro tipo de elemento, simplemente añado su valor. En ambos casos, cada valor irá relacionado al nombre del elemento.
Luego de esto, puedes enviar al objeto
FormData
a través del método Ajax. Solo como un consejo, la próxima vez, busca la documentación respectiva para que sepas qué hacer,
aquí hay parte de lo que puedes encontrar con una simple búsqueda.
Saludos