javascript - JQuery 文件上传 : sending two request on data. 提交()

标签 javascript jquery ruby-on-rails

我正在尝试使用 Paperclipjquery-fileupload-rails 在我的应用中上传视频

我关注了ulpoad file with paper clip and jquery上传视频,但就在我选择视频时上传视频,并且不等待按提交按钮,所以我遵循 1 : jQuery file upload: Is it possible to trigger upload with a submit button?选择单个视频并在提交按钮上上传,而不是在选择文件时上传。

但是我是否将提交按钮放在表单中还是外部表单中存在问题。

当我将提交按钮放在表单中时,它会向按下提交按钮发送两个请求,一个带有视频,第二个没有视频。

如果我将按钮放在表单之外,它会在按下提交按钮时发送一个请求,但在成功创建/更新后,它仍保留在同一页面上。

我想要的只是按下“提交”后,仅发送一个请求并在成功创建/更新时重定向到索引页面。

在_form.slim中

= simple_form_for [:admin,add] do |f|
   .wizard-content
     .row
       .col-sm-6
          = f.input :video, multiple: false, wrapper: :horizontal_file_input
          button#submit_button.btn.btn-primary
            | Save

在adds.coffee中

 jQuery ->
      $('#add_video').attr('name','add[video]')
      $('#add_video').fileupload
         $('#submit_button').off('click').on 'click', ->
           data.submit()

在 Controller 中我有

def create
     if add.save
       redirect_to admin_adds_path
       flash[:success]= "Add Created"
     else
       render :new
     end
   end

   def update
     if add.update(add_params)
       redirect_to admin_adds_path
       flash[:success]= "Add Updated"
     else
       render :edit
     end
   end

还有一个_add.slim

= image_tag(@add.uploaded_file(:small), class: 'thumb')

我还创建了 create.js.erb 和 edit.js.erb 作为我遵循的建议教程(尽管我不明白它的用法)

- if @add.new_record?
  |  alert('Failed');
- else
  |  if ($('h1') !== undefined) { $('h1').append("
  =j render partial: 'adds/add', locals: { add: @add }
  | "); }

这有什么问题吗?

最佳答案

尝试表单内的按钮并使用 event.preventDefault(),因为表单似乎正在执行默认操作,即发送数据并重新加载页面并调用 js。

$('#submit_button').off('click').on 'click', (event) ->
  event.preventDefault()
  data.submit()

关于javascript - JQuery 文件上传 : sending two request on data. 提交(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40179378/

相关文章:

javascript - Shift 单击以在不使用 Angular Directive(指令)的情况下为对象添加值

javascript - 访问 javascript 对象的@attributes

javascript - 渐变映射作为 HTML5 Canvas 元素中的不透明度?

javascript - jQuery fullcalendar 到波斯语

ruby-on-rails - 如何一次显示一条 Ruby on Rails 表单验证错误消息?

ruby-on-rails - 在 Ruby on Rails 中,如何使全局常量在开发模式下自动加载,而无需重新启动服务器?

javascript - 无法将 jQuery object.method 传递给另一个要执行的函数

javascript - 如何让页面的其余部分在我的 div 加载后淡出黑色,并在 div 关闭后淡出?

javascript - 如何使用javascript和ajax调用为文件上传添加进度条?

ruby-on-rails - Rails 5.2 Net::SMTPAuthenticationError - 535 身份验证失败:发送电子邮件时禁用帐户(Localhost 和 Heroku)