我想上传一个文件,使用“AJAX”,处理文件中的数据,然后返回一些数据到UI,所以我可以动态更新屏幕。jquery ajax表单成功回调不被称为
我正在使用JQuery Ajax表单插件,jquery.form.js在http://jquery.malsup.com/form/找到的JavaScript和在后端使用Django。表单正在提交,后端处理没有问题,但是当从服务器收到响应时,我的Firefox浏览器会提示我下载/打开“application/json”类型的文件。该文件具有我一直试图发送给浏览器的json内容。
我不相信这是如何发送json的问题,因为我在这个应用程序的多个地方使用了模块化的json_wrapper()
函数。
这里是后应用于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>
,你不会看到任何提交按钮,因为我打电话与其他按钮提交在哪里以及正在使用ajaxSubmit会()从jquery.form.js插件。
这里是控制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);
}
正如你所看到的,我已经得到了渴望看到成功的回调函数的工作,根本就成功创建了一个警报消息。但是,我们从未接到过这个电话。此外,error
函数未被调用,并且beforeSubmit
函数被执行。
,我找回文件具有以下内容:
{"count": 18, "failed": 0, "completed": 18, "success": true, "trasaction_id": "SQEID0.231"}
我用“成功”在这里表示服务器是否是能够充分运行post命令。如果失败,结果会如下所示:
{"success": false, "message":"<error_message>"}
您的时间和帮助是非常感谢。我已经花了几天的时间了,并且很乐意继续前进。
“error”调用是否执行?或'beforeSubmit'?检查萤火虫或铬合金的实际响应也会有所帮助,看看实际回来的是什么。 – 2010-09-14 20:12:53
不,错误调用不会执行,但beforeSubmit会执行。在提交之前,我们也知道一切正常,因为服务器端处理运行正常。 – 2010-09-14 20:19:49
@Michael - 你在萤火虫/镀铬/提琴手网面板上看到了什么反应? – 2010-09-14 20:28:13