发送形式使用Ajax
问题描述:
$('#add-article').submit(function() {
var formData = new FormData($(this));
$.ajax({
type: 'post',
url: '/add-article',
dataType: 'json',
data: formData,
//processData: false,
//contentType: false,
error: function(data) {
var errors = data.responseJSON;
$.each(errors, function(k, v) {
$('#' + k).addClass('has-error').append('<span class="help-block"><strong>' + v[0] + '</strong></span>');
});
},
success: function(data) {
window.location.replace(data.url);
}
});
return false;
});
文件当我注释掉porcessData: false
,形式没有得到提交,但通过标准表单提交不是阿贾克斯,并给了我一个错误Uncaught TypeError: Illegal invocation
发送形式使用Ajax
如果我加入这两条线,阿贾克斯将提交一个空表格。
我的形式:
<form role="form" method="POST" action="{{ route('post_add_article') }}" id="add-article" enctype="multipart/form-data">
<input type="text" class="form-control" name="title">
<textarea class="form-control" rows="16" name="body"></textarea>
<input type="file" name="files[]" multiple>
<button type="submit" class="btn btn-primary pull-right">Submit</button>
</form>
答
似乎与更换var formData = new FormData($(this));
解决var formData = new FormData($(this)[0]);