Javascript JQuery文件上载:发送两个关于数据的请求。提交()

Javascript JQuery文件上载:发送两个关于数据的请求。提交(),javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我正在尝试使用曲别针和jquery fileupload rails在我的应用程序中上传视频 我跟随上传视频,但在上传视频时,我选择了视频,不等待按下提交按钮,所以我跟随 :选择单个视频并在提交按钮上上载,而不是在选择文件时上载 但在我是将提交按钮放在表单中还是放在表单外部这一问题上存在争议 当我在表单中放置submit按钮时,它会向按下submit按钮发送两个请求,一个有视频,另一个没有视频 如果我把按钮放在表单外,它会在按下提交按钮时发送一个请求,但在成功创建/更新后,它会保持在同一页面上

我正在尝试使用曲别针和jquery fileupload rails在我的应用程序中上传视频

我跟随上传视频,但在上传视频时,我选择了视频,不等待按下提交按钮,所以我跟随 :选择单个视频并在提交按钮上上载,而不是在选择文件时上载

但在我是将提交按钮放在表单中还是放在表单外部这一问题上存在争议

当我在表单中放置submit按钮时,它会向按下submit按钮发送两个请求,一个有视频,另一个没有视频

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

我想要的是,在按Submit时,只发送一个请求,并在成功创建/更新时重定向到索引页面

苗条的

= 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
在咖啡里

 jQuery ->
      $('#add_video').attr('name','add[video]')
      $('#add_video').fileupload
         $('#submit_button').off('click').on 'click', ->
           data.submit()
在控制器中,我有

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()

当您将按钮放在表单外部时,您可以处理done事件和重定向。 请记住,这篇文章是ajax,如果您发布了一个更改或新元素,您将通过ajax得到响应,而不是通过web浏览器页面

有些人喜欢

$('#fileupload').fileupload({
    dataType: 'json',
    add: function (e, data) {            
        $("#up_btn").off('click').on('click', function () {
            data.submit();
        });
        done: function (e, data) {
           window.location.href = "data.next_url"; 
        }
    },
});

可能您需要响应一些json而不是重定向重定向到管理员添加路径以从控制器传递到javascript信息,例如成功、错误、下一个url,其他

它只发送一次请求,但保持在同一页面上,然而,在控制台上,它说重定向到312MS ActiveRecord中完成了200 OK:91.4msy您应该进行一些调试,以了解问题出在哪里,在这些方法中添加一些put以检查它们是否正在运行,例如在重定向put add _________________。另外,flash消息应该在重定向之前。我在create/update方法中尝试了一个调试器,也使用了PUT,每一寸代码都在运行,但仍然保持在同一页面上。尝试更改重定向。将_重定向到:root,以了解代码是否到达该行。确保您在routes.rb上设置了它。是的,它执行了,说,在315ms内重定向到完成200 OK ActiveRecord:69.9msI尝试将按钮放置在$'submit_button'之外,并使用了$'submit_button'。关闭'click'。打开'click',事件->数据。提交完成:e,数据->警报上载完成。window.location.href=data.next\u url;但它似乎没有完成:方法和卡在同一页上警报从未触发?不,记录保存的页面卡在同一页上,没有警报你知道如何使用浏览器控制台进行调试吗?你能检查ajax的url是否正常以及响应吗?嗨,穆罕默德。如果您注释掉jQuery提交代码会发生什么情况?@IAMZERG it submitsfrom没有显示进度,但它是否仍然提交两次或仅提交一次?仅一次,其中一次将包含我删除的data.subm