He leído cerca de 20 publicaciones en el foro/preguntas/respuestas de stackoverflow diferentes sobre esto, pero simplemente no puedo hacer que esto funcione. He trabajado con jQuery/PHP alrededor de 5 años, pero esta es la primera vez que necesito hacer algo como esto con AJAX.
Entonces ... por ahora, solo estoy probando e intentando cargar el archivo .txt e intentar obtener el contenido usando file_get_contents() y enviarlo de vuelta a mi código JS.
Eliminé todo el personal elegante y simplifiqué mis archivos tanto como pude, así que este es mi archivo HTML:
<div class="container-fluid"> <div class="row"> <div class="col-xs-12"> <form id="uploadForm" action="url/to/php/script"> <input type="file" name="frame" /> <input type="submit" value="UPLOAD" /> </form> </div> </div> </div>y mi JS
$("#uploadForm").bind('submit',(function(e) { e.preventDefault(); $.ajax({ url: 'url/to/php/script', type: "POST", data: new FormData(this), contentType: false, cache: false, processData: false, success: function(data) { console.log(data); } }); })); y en mi script PHP tengo var_dump($_FILES) que me da una matriz vacía.
Mi JS y formulario se copian de una de las respuestas de stackoverflow. URL: $_POST y $_FILES vacíos después de la carga del archivo AJAX , porque está marcado como funciona, pero para mí... todavía está vacío.
Normalmente mi formulario tiene enctype="multipart/form-data" y method="post" pero no hay diferencia.
Mi jQuery lib: http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js
Vine aquí porque siento que no hay más cosas que pueda probar, no importa lo que haga, la matriz $_FILES está vacía.
Su lógica AJAX está bien. El problema se debe a que está utilizando una versión muy, muy desactualizada de jQuery, y ha habido muchos ajustes en la lógica de AJAX a lo largo de los años de desarrollo, especialmente desde el aumento de la compatibilidad con FormData y el envío de datos binarios a través de AJAX.
Debe actualizar jQuery a al menos 1.12, idealmente 3.2 si no necesita compatibilidad con IE heredado.
use new version jquery library like this, your ajax code looks good so for this requirement need to update your jquery library . you use old library in that case it is not working http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.jsmás para información
https://code.jquery.com/jquery/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> $("#uploadForm").on('submit',(function(e) { e.preventDefault(); $.ajax({ url: "url/to/php/script", type: "POST", data: new FormData(this), contentType: false, cache: false, processData: false, success: function(data){ console.log(data); } }); })); </script>