Skip to content

Instantly share code, notes, and snippets.

Created November 19, 2013 13:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/7545762 to your computer and use it in GitHub Desktop.
Save anonymous/7545762 to your computer and use it in GitHub Desktop.
$(document).ready ->
$('.chosen-select').chosen()
$('#import_form').fileupload
autoUpload: false
dataType: "json"
add: (e, data) ->
data.context = $(tmpl("template-upload", data.files[0]))
$('#import_form').append(data.context)
$("#import_button").on "click", ->
$("#import_form").triggerHandler "fileuploadsubmit"
progress: (e, data) ->
if data.context
progress = parseInt(data.loaded / data.total * 100, 10)
data.context.find('.bar').css('width', progress + '%')
$('#import').click ->
alert('Data submitted for processing')
$('#import_form').on("ajax:success", (e, data, status, xhr) ->
console.log("It works")
).bind("ajax:error", (e, xhr, status, error) ->
alert(error)
)
@frontenddeveloping
Copy link

remove from add callback

$("#import_button").on "click", ->
     $("#import_form").triggerHandler "fileuploadsubmit"

and add it to dom ready after all fileupload init

@joes1876
Copy link

OK, but now the file does not get uploaded at all. The changed code is as follows

$(document).ready ->
  $('.chosen-select').chosen()  

  $('#import_form').fileupload
    autoUpload: false
    dataType: "json"
    add: (e, data) ->    
      data.context = $(tmpl("template-upload", data.files[0]))
      $('#import_form').append(data.context)     
    progress: (e, data) ->
      if data.context
        progress = parseInt(data.loaded / data.total * 100, 10)
        data.context.find('.bar').css('width', progress + '%')

  $("#import_button").on "click", ->
       $("#import_form").triggerHandler "fileuploadsubmit"  

  $('#import_form').on("ajax:success", (e, data, status, xhr) ->
      console.log("It works")     
  ).bind("ajax:error", (e, xhr, status, error) ->
      alert(error)
  )  

@frontenddeveloping
Copy link

You mean don't upload after you click import_button?

@joes1876
Copy link

Form gets submmitted but the file data is not submitted along with it.

@frontenddeveloping
Copy link

I get the example http://blueimp.github.io/jQuery-File-Upload/basic-plus.html with autoUpload: false. See it source for more information. In your example change onclick handler to this:

$("#import_button").on('click', function () {
    var $this = $(this),
         files = $this.data('files');
    $.each(files, function (fileName, data) {
        data.submit();
    });
});

and change in your fileupload config add handler like this:

$().on('fileuploadadd', function (e, data) {
    var $button = $('#import_form');
    var files = $("#import_button").data('files') || {};

    data.context = $(tmpl("template-upload", data.files[0]))
    $button.append(data.context);

    files[data.files[0].name] = data;
    $button.data('files', files);
})

@joes1876
Copy link

I changed the code to the following but still getting 500 Internal Server Error on button click

$(document).ready ->
  $('.chosen-select').chosen()  

  $('#import_form').fileupload
    autoUpload: false
    dataType: "json"
    add: (e, data) ->    
        $button = $("#import_form")
        files = $("#import_form").data("files") or {}
        data.context = $(tmpl("template-upload", data.files[0]))
        $button.append data.context
        files[data.files[0].name] = data
        $button.data "files", files
    progress: (e, data) ->
      if data.context
        progress = parseInt(data.loaded / data.total * 100, 10)
        data.context.find('.bar').css('width', progress + '%')


  $("#import_button").on "click", ->
    $this = $(this)
    files = $this.data("files")
    $.each files, (fileName, data) ->
      data.submit()

  $('#import_form').on("ajax:success", (e, data, status, xhr) ->
      console.log("It works")     
  ).bind("ajax:error", (e, xhr, status, error) ->
      alert(error)
  )  

@frontenddeveloping
Copy link

Still getting 500 Internal Server Error? You have problem with sending files onclick only or not?

About 500 Error: it the sever error. I can help if you show me the request and it content. Can you copy request body and headers here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment