Ajax联系表单中的文件上载不起作用

时间:2016-02-01 19:44:24

标签: javascript php jquery ajax forms

我正在尝试使用文件上传表单扩展此脚本: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搜索并尝试了所有内容,但我无法从中获取任何数据。整个表单脚本中断。

我希望你能帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

使用此过程获取表单数据解决了我的问题:

&#13;
&#13;
// 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;
&#13;
&#13;

而不是:

&#13;
&#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;
&#13;
&#13;

感谢您的帮助!