Estoy tratando de cargar un archivo con "AJAX", procesar datos en el archivo y luego devolver algunos de esos datos a la IU para que pueda actualizar dinámicamente la pantalla.jquery ajax devolución de llamada de éxito no se llama
Estoy usando el complemento de formulario JQuery Ajax, jquery.form.js encontrado en http://jquery.malsup.com/form/ para el javascript y usando Django en el back-end. Se está enviando el formulario y el procesamiento en el back-end se realiza sin problemas, pero cuando se recibe una respuesta del servidor, mi navegador Firefox me pide que descargue/abra un archivo de tipo "application/json". El archivo tiene el contenido json que he intentado enviar al navegador.
No creo que esto sea un problema con la forma en que estoy enviando el json ya que tengo una función modularizada json_wrapper()
que estoy usando en varios lugares en esta misma aplicación.
Esto es lo que se ve mi forma después de aplicar las plantillas de Django:
<form method="POST" enctype="multipart/form-data" action="/test_suites/active/upload_results/805/">
<p>
<label for="id_resultfile">Upload File:</label>
<input type="file" id="id_resultfile" name="resultfile">
</p>
</form>
Usted no verá ningún botones de envío porque yo estoy llamando presentar con un botón en otro lugar y estoy utilizando ajaxSubmit() de la plugin jquery.form.js
Aquí es el control de código javascript:
function upload_results($dialog_box){
$form = $dialog_box.find("form");
var options = {
type: "POST",
success: function(data){
alert("Hello!!");
},
dataType: "json",
error: function(){
console.log("errors");
},
beforeSubmit: function(formData, jqForm, options){
console.log(formData, jqForm, options);
},
}
$form.submit(function(){
$(this).ajaxSubmit(options);
return false;
});
$form.ajaxSubmit(options);
}
Como se puede ver, he recibido desesperado por ver el trabajo de la función de devolución de llamada de éxito y simplemente he creado un mensaje de alerta en caso de éxito. Sin embargo, nunca llegamos a esa llamada. Además, no se llama a la función error
y se ejecuta la función beforeSubmit
.
El archivo que regrese tiene el siguiente contenido:
{"count": 18, "failed": 0, "completed": 18, "success": true, "trasaction_id": "SQEID0.231"}
utilizo el 'éxito' para indicar si o no el servidor era capaz de ejecutar el comando pos adecuadamente. Si fallara, el resultado sería similar a:
{"success": false, "message":"<error_message>"}
Se agradece mucho su tiempo y ayuda. He pasado unos días en esto ahora y me encantaría seguir adelante.
¿Se ejecuta la llamada 'error'? o el 'beforeSubmit'? Comprobar la respuesta real en Firebug o Chrome también ayudaría, para ver lo que realmente está volviendo. –
No, la llamada de error no se ejecuta, pero el beforeSubmit sí lo hace. También sabemos que todo está funcionando bien antes de enviar, ya que el procesamiento del lado del servidor se está ejecutando correctamente. –
@Michael - ¿Qué respuesta estás viendo en el panel de red Firebug/Chrome/Fidler? –