我正在尝试使用文件上传表单扩展此脚本:Ajax Contact Form on GitHub 在成功实现PHPMailer之后,我认为添加新的文件上传表单会很有趣。但我不能让它运行。
我在index.html中添加了一个新的表单字段:
<div class="form-group" id="file1-field">
<label for="form-file1" class="col-lg-2 control-label">Dateianhang</label>
<div class="col-lg-10">
<input type="file" class="form-control" id="form-file1" name="form-file1">
</div>
</div>
之后我将contentType和processData行添加到* .js文件中。
$.ajax({
type : 'POST',
url : 'php/process.php',
data : formData,
dataType : 'json',
contentType : false,
processData : false,
encode : true
})
在最后一步中,我将这些行添加到php脚本中:
if(is_array($_FILES)) {
$mail->AddAttachment($_FILES['form-file1']['tmp_name'],$_FILES['form-file1']['name']);
}
我已经用Google搜索并尝试了所有内容,但我无法从中获取任何数据。整个表单脚本中断。
我希望你能帮助我。提前谢谢。
答案 0 :(得分:0)
我找到了解决方案:
使用此过程获取表单数据解决了我的问题:
// get the form data
var fData = new FormData();
fData.append('name', $('input[name=form-name]').val());
fData.append('email', $('input[name=form-email]').val());
fData.append('subject', $('input[name=form-subject]').val());
fData.append('message', $('textarea[name=form-message]').val());
fData.append('file1', $('input[name=form-file1]')[0].files[0]);
// process the form
$.ajax({
type: 'POST',
url: 'php/process.php',
data: fData,
dataType: 'json',
contentType: false,
processData: false,
encode: true
})
&#13;
而不是:
// get the form data
var formData = {
'name': $('input[name="form-name"]').val(),
'email': $('input[name="form-email"]').val(),
'subject': $('input[name="form-subject"]').val(),
'message': $('textarea[name="form-message"]').val()
};
// process the form
$.ajax({
type: 'POST',
url: 'php/process.php',
data: formData,
dataType: 'json',
//contentType : false,
//processData : false,
encode: true
})
&#13;
感谢您的帮助!