2013-10-18 114 views
1

如何將FormData對象放入表單並使用ajaxForm插件提交? 我嘗試做如下事情:使用ajaxForm插件提交FormData

var fd = new FormData(); 
fd.append('photo', file); 
var form = $("<form method='POST' action='url.php' enctype='multipart/form-data'></form>"); 

添加FD FORMDATA爲對象的形式和轉化的形式給ajaxForm由:

form.ajaxForm({ 
     beforeSend: function(e) {}, 
     uploadProgress: function(event, position, total, percentComplete) {}, 
     complete: function(data) {} 
}); 

然後提交表單。 所以在url.php我可以通過$ _FILES ['photo']獲取文件;

+0

查看http://blog.new-bamboo.co.uk/2012/01/10/ridiculously-simpl e-ajax-uploads-with-formdata – Peter

+0

嗯,我知道如何發佈FormData與純ajax,但在這種情況下,我需要通過ajaxForm發佈,因爲我需要回調函數,如beforeSend,uploadProgress和complete函數,這隻能由ajaxForm實現。 – paugoo

回答

2

您可以直接發送數據,像正常的AJAX後..

像 ..

form.ajaxForm({ 
    data: { data: fd }, 
    beforeSubmit:function() { 

    } 
    beforeSend: function(e) {}, 
    uploadProgress: function(event, position, total, percentComplete) {}, 
    complete: function(data) {} 
}); 

我已經測試過它,它工作正常..

+0

我也嘗試過你的方法,但它總是返回「Uncaught TypeError:非法調用」,這就是爲什麼我考慮是否有這種情況下的另一種方法? 這是我當前的代碼: – paugoo

+0

'$(「#upload_file」)。change(function(){ var filelist = $(this).context.files; for(var i = 0; i 「); create_ajax_form(形式,FD); } } 功能create_ajax_form(OBJ,FD){ obj.ajaxForm({ 數據:{數據:FD}, (){}, beforeSend:function complete:function(data){} }); }' – paugoo

+0

代碼鏈接:[link](http://codepad.org/QR4oyEnf) – paugoo

0

這就是工作對我來說

var fd = new FormData(this); 
fd.append('upload', file); 

$(this).ajaxSubmit({ 
    formData: fd, 
    ... 
});