javascript - jQuery 文件上传插件成功回调

标签 javascript jquery ruby-on-rails-3 html

我使用 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/

相关文章:

javascript - 如何避免 Nest.Js/Node.Js 进程占用 100% 的 CPU?

jquery - 在 AJAX 响应中使用 js.haml 渲染部分内容

ruby-on-rails - rake 数据库 :migrate not working on my postgres db

javascript - 将 JavaScript 哈希作为参数传递给 jQuery 函数

javascript - 刷新时随机数

ruby-on-rails - 回形针弃用方法

javascript - 尝试使用 npm 中的 'log' 包登录到 nodejs 上的文件

javascript - 为什么 chrome 开发者工具不显示 WhatsApp 网络应用程序请求?

javascript - 用另一个包完全覆盖 NPM 包

javascript - Rails - document.ready 无法在特定 JavaScript 文件中工作