我使用 jQuery 文件上传插件 (https://github.com/blueimp/jQuery-File-Upload) 在 rails 中同时上传多张图片。照片附加到项目模型,项目被添加到投票中。
使用插件作为:
$(document).ready(function(){
$('#fileupload').fileupload({
url: '/polls',
dataType: "json",
done: function(e,data){
window.location = "/polls/" + data.result.id;
}
}
});
预计会在投票 Controller 中为每个照片文件调用创建操作,并在所有文件上传后重定向页面以显示创建的投票。但是,例如选择上传6个文件时,最初在投票页面中只显示4张照片。刷新页面后,显示了6张照片。我猜这个问题是由回调函数引起的。似乎它在所有文件上传之前重定向到投票页面
完成了。所有上传请求应该都已成功发送,但项目并未全部创建(回形针处理图像可能需要几秒钟)。
对我解决这个问题有什么建议吗?谢谢
编辑:检查“完成”回调函数实际上是为每个成功的 http 请求调用的。发送完所有请求后,它没有被调用。并且为每个照片文件调用了创建操作。我怎样才能拥有一个仅在所有文件都上传后才回调的函数,无论是在客户端还是在服务器端?
最佳答案
您可以尝试使用 add
回调来计算正在上传的文件,然后在每个 done
回调中递减该数字。然后,只有当该数字为 0
时,您才会进行重定向。
像这样:
$(document).ready(function(){
var filesToProcess = 0;
$('#fileupload').fileupload({
url: '/polls',
dataType: "json",
add: function(e, data){
filesToProcess++;
},
done: function(e,data){
filesToProcess--;
if (filesToProcess === 0){
window.location = "/polls/" + data.result.id;
}
}
}
});
关于javascript - jQuery 文件上传插件成功回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13558389/