2014-01-20 38 views
1

使用blueimp的文件上传后提交按钮我怎么触发文件上传成功的Ajax请求后提交? 我试图触发fileuploadsubmit,但它说数据是未定义的。 下面是初始代码:Blueimp文件上传触发一个成功的Ajax请求

HTML:

<form id="add-project-form" method="post" action="http://localhost/project/add/"> 
    <p> 
     <label for="project">Project Name:</label> 
     <input id="project" class="input-text" type="text" name="name" /> 
    </p> 
    <p> 
     <label for="overview">Project Overview:</label> 
     <input id="overview" class="input-text" type="text" name="overview" /> 
    </p> 
    <p><input type="submit" value="Add Project" /> 
</form> 

<form id="logo-upload" method="post" action="http://localhost/project/upload/" enctype="multipart/form-data"> 
    <p> 
     <input type="file" name="logo" id="logo" /> 
    </p> 
</form> 

的jQuery:

$('#logo-upload').fileupload({ 
    dataType: 'json', 
    maxNumberOfFiles: 1, 
    autoUpload: false 
}).on('fileuploadsubmit', function(e, data) { 
    console.log(data); 
}); 


$(document).on("submit", "#add-project-form", function(e) { 
    e.preventDefault(); 

    var data = $(this).serialize(); 
    var url  = $(this).attr("action"); 

    $.ajax({ 
     url: url, 
     data: data, 
     type: "post", 
     dataType: "json", 
     success: function(response) { 
      if(response && response.location != undefined) { 

       // I would want the upload to begin here 

      $('#logo-upload').fileupload().trigger('fileuploadsubmit'); 
      } 
     } 
    }); 
}); 
+0

'e.data'中包含了什么?你从哪里得到'.on('fileuploadsubmit',函数(e,data){'from?是否应该包含第二个参数? –

+0

不,它适用于我。http://jsfiddle.net/eLLWN/29/ –

+0

@KevinB下面是'e'对象的快照:http://screencast.com/t/rINDI0uO关于'.on('fileuploadsubmit',函数(e,data){'我跟着它:http ://stackoverflow.com/questions/19807361/uploading-multiple-files-asynchronously-by-blueimp-jquery-fileupload – gwinh

回答

4

绑定上的按钮提交功能,你的Ajax请求后强制点击:

$('#logo-upload').fileupload({ 
    dataType: 'json', 
    maxNumberOfFiles: 1, 
    autoUpload: false, 
    add : function(e,data){ 
      $("#uploadButton").on("click",function(){ 
       data.submit(); 
      }) 
      } 
}).on('fileuploadsubmit', function(e, data) { 
    console.log(data); 
}); 

$.ajax({ 
    url: url, 
    data: data, 
    type: "post", 
    dataType: "json", 
    success: function(response) { 
     if(response && response.location != undefined) { 
      $("#uploadButton").click(); 
     } 
    } 
}); 
+0

我不喜欢引入一个新的元素,作为触发事件的想法,但它确实解决了这个问题。谢谢你先生! – gwinh

+0

我想你也可以在'add'事件和成功调用'data.submit'上创建ajax请求 –

+0

Worked great 为了我。谢谢! – Olokoo