[英]JQuery AJAX not sending file with form
我的JQuery具有以下AJAX函数:
var formData = $('#FonykerEditForm').serialize();
$.ajax ({
type: 'POST',
url: '<?php echo $html->url('/fonykers/edit',true); ?>',
data: formData,
dataType: 'json',
success: function(response) {
message.html(response.msg);
message.fadeIn();
if(!response.ok) {
message.removeClass('success');
message.addClass('error');
} else {
message.removeClass('error');
message.addClass('success');
username = $('#FonykerUsername').val();
email = $('#FonykerEmail').val();
}
$('#save-account-button').removeAttr('disabled');
$('.input-text').removeClass('ok');
$('.input-combo').removeClass('ok');
},
error: function (xhr, ajaxOptions, thrownError){
alert(xhr.statusText);
alert(thrownError);
$('#save-account-button').removeAttr('disabled');
}
});
我遇到的问题是,表单中的类型文件字段没有与表单的其余数据一起提交,我如何在ajax请求的数据中包含文件?
我尝试了此链接,对我来说效果很好。
http://portfolio.planetjon.ca/2014/01/26/submit-file-input-via-ajax-jquery-easy-way/
例:
$( '#my-form' ).submit( function( e ) {
$.ajax( {
url: 'http://host.com/action/',
type: 'POST',
data: new FormData( this ),
processData: false,
contentType: false
} );
e.preventDefault();
} );
就像我在上面的评论中所说的那样,通过ajax发送文件并非易事。 如果您仍然想尝试一下。 我见过的正常方法是创建一个新的iframe,向其中添加文件输入字段,选择文件并以编程方式提交。 这样,iframe就会在后台进行提交。
看一下该插件的工作方式:
https://github.com/valums/file-uploader/blob/master/client/fileuploader.js#L995
基本上,AJAX会以键/值对的形式提交数据。.由于文件是二进制数据,因此您不能使用Ajax提交文件。.您需要使用标准格式Submit来提交数据,并且需要在服务器上提交由于接受form/multipart
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.