Ayuda con ajax

296 visitas 1 respuestas

Hola bien día, estoy realizando un sitio donde se tiene que subir todo un formulario con datos (5 campos) y además uno o más input file. Ya logré todo el proceso de transmisión de datos desde ajax hasta php, pero el problema que tengo es el siguiente:

Cuando selecciono solamente imágenes todo funciona bien, pero cuando selecciono las imágenes y uno o más archivos distintos (auido, video o documento) no llega información alguna en php ni por $_POST ni $_REQUEST; esto mismo pasa cuando selecciono por si solo uno o más archivos distintos a imágenes.

Espero haberme explicado.

Este es el código que tengo:

$('#formulario').submit(function(e){      
       e.preventDefault();
       $('#modalEspera').modal('show');
        $.ajax({
            url: '../miArchivo.php',
            type: 'POST',
            dataType: 'json',
            data: new FormData(this),
            processData: false,
            contentType: false
        }).always(function (respuesta){
            if(respuesta.estado === true)
                window.location.reload();
            else{
                $('.modal').modal('hide');
                muestraRespuesta(respuesta);
            }
        });
});

Espero me puedan ayudar!. Saludos

por

Registrado desde: 10 meses

Respuestas

1 0

Hola, yo no suelo usar jquery porque no me gusta agregar una libreria con mas de 1000 lineas de codigo cuando voy a usar determinadas cosas pero viendo tu codigo me da la sensacion que el error esta en el contenType,cuando estableces contenType a false en tu formulario en php asegurate que tenga añadido

enctype="multipart/form-data"

$(document).ready(function () {

$("#formulario").submit(function (event) {

    //desabiluta el envio por defecto
    event.preventDefault();
    var formData = $(this).serialize();

    $.ajax({
        url: 'miArchivo.php',
        type: 'POST',
        data: formData,
        async: false,
        cache: false,
        contentType: false,
        processData: false,
        success: function () {
            alert('formulario enviado!');
        },
        error: function(){
            alert("aqui te dara el error de envio");
        }
    });

    return false;
});

});

Luego encargate de que dejarlo a tu gusto yo he puesto alert para verlo, espero te sirva, saludos

por desde España

Registrado desde: 17 Dec 15