Using jQuery ajax to upload file and form data with formData()

24,063

You can pretty easy. Take a look at these posts:

Share:
24,063
SoldierCorp
Author by

SoldierCorp

Full-stack web and mobile developer Portfolio: https://edgardorl.com Youtube: http://youtube.com/SoldierCorp0

Updated on November 22, 2020

Comments

  • SoldierCorp
    SoldierCorp over 3 years

    I want upload a file with jquery ajax and php using forData() with this code:

    var data = new FormData();
    
    data.append('image',document.getElementById('uFile').files[0]);
    data.append('tag','saveDocument');
    data.append('data',$('#saveDocument').serializeArray());
    
    $.ajax({
        url: url,
        type: 'post',
        data: data,
        cache: false,
        contentType:false,
        dataType: 'json',
        processData: false,
        success: function (data) {
            setAlert("Documento guardado correctamente!",success);
        }, error: function() {
            setAlert("Ha ocurrido un error al guardar!",error);
        }
    });
    return false;
    

    This line contains all data of fields in my form:

    data.append('data',$('#saveDocument').serializeArray());
    

    But in PHP I can't access to that data and I want access to data of form to insert on a table, do you know what's the problem?

    Html Form

    <form id="saveDocument" enctype="multipart/form-data" method="post">
    <p><i>Todos los campos son requeridos!</i></p>
    <p> 
        <input id="uName" class="uName span5" name="uName" type="text" placeholder="Nombre completo" required/>
    </p>
    <p> 
        <input id="uEmail" class="uEmail span5" name="uEmail" type="email" placeholder="E-mail" required/>
    </p>
    <p> 
        <select id="uDept" class="uDept span5" name="uDept" type="text" required>
            <option value="0">Seleccione departamento</option>
            <option value="1">Dirección</option>
            <option value="2">Recursos Humanos</option>
            <option value="3">Oficina</option>
        </select>
    </p>
    <p> 
        <input id="uIssue" class="uIssue span5" name="uIssue" type="text" placeholder="Asunto" required/>
    </p>
    <p>
        <textarea id="uComment" class="uComment" name="uComment" placeholder="Comentario (Máximo 30 caracteres)" required></textarea>
    </p>
    <p>
        <select id="uUrgency" class="uUrgency span5" name="uUrgency" type="text" required>
            <option value="0">Seleccione urgencia</option>
            <option value="1">Normal</option>
            <option value="2">Alta</option>
            <option value="3">Urgente</option>
        </select>
    </p>
    <p>
        <input id="uFile" class="uFile span5" name="uFile" type="file" required/>
        <input id="nameFile" class="nameFile span5" name="nameFile" type="text" placeholder="Click para seleccionar el archivo" onClick="$('.uFile').click();"/>
    </p>
    <p>
        <input class="btn btn-danger" type="reset" value="Limpiar"/>
        <input id="sendFile" class="btn btn-primary" type="submit" value="Guardar"/>
    </p>
    

    The below image is taken from developers tool of chrome:

    enter image description here