1 回答
TA贡献1788条经验 获得超4个赞
值得问你的JS...
您正在执行以下操作:
data: $(this).serialize(),
这将不包括文件附件。您需要使用 JS FormData 类并关闭一些 jQuery 功能。
首先,为文件输入一个id,以便您可以更轻松地定位它(您的标签也应该定位此id,而不是属性):labelname
<input name="attachments[]" id="attachments" type="file" multiple="multiple">
然后更改 ajax 代码以将表单数据放入对象中,然后将文件元素添加到其中:FormData
var fd = new FormData('contact-form');
var files = $("#attachments").get(0).files;
for (var i = 0; i < files.length; i++) {
fd.append("attachments", files[i]);
}
$.ajax({
type: "POST",
url: url,
data: fd,
processData: false,
contentType: false,
success: function (data) {
var messageAlert = 'alert-' + data.type;
var messageText = data.message;
var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>' + messageText + '</div>';
if (messageAlert && messageText) {
$('#contact-form').find('.messages').html(alertBox);
$('#contact-form')[0].reset();
grecaptcha.reset();
}
},
error: function (data) {
//this is going to happen when you send something different from a 200 OK HTTP
alert('Ooops, something happened: ' + data.message);
}
});
注意:此方法在版本 10 之前的 Internet Explorer 中不起作用。
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报