如何通过Ajax

时间:2018-09-27 09:03:50

标签: javascript php jquery ajax

我试图查看文件是否从表单中正确发布,但是我尝试回显/打印的所有内容都显示为空。

这是我的表格:

<form id="employeeformadd" method="post" enctype="multipart/form-data">
  <div class="row">
    <div class="col-md-6">
      <div class="card m-b-20">
          <div class="card-body">
            <input type="hidden" name="id_company" value="<?PHP echo $getbedrijfinfo['id']; ?>">
          </div>
      </div>
    </div>
    <div class="col-md-6">
    <div class="card m-b-20">
        <div class="card-body">
          <div class="form-group row">
              <label for="example-text-input" class="col-sm-4 col-form-label">Kopie rijbewijs</label>
              <div class="col-sm-8">
                <form action="#">
                    <div class="form-group">
                        <input id="copy_driverslicense" type="file" class="filestyle" data-input="false" data-buttonname="btn-secondary">
                    </div>
                </form>
              </div>
          </div>
          <div class="form-group row">
              <label for="example-text-input" class="col-sm-4 col-form-label">Kopie paspoort</label>
              <div class="col-sm-8">
                <form action="#">
                    <div class="form-group">
                        <input type="file" class="filestyle" data-input="false" data-buttonname="btn-secondary">
                    </div>
                </form>
              </div>
          </div>
          <div class="form-group row">
              <label for="example-text-input" class="col-sm-4 col-form-label">Kopie medische geschiktheidsverklaring</label>
              <div class="col-sm-8">
                <form action="#">
                    <div class="form-group">
                        <input type="file" class="filestyle" data-input="false" data-buttonname="btn-secondary">
                    </div>
                </form>
              </div>
          </div>
          <div class="form-group row">
              <label for="example-text-input" class="col-sm-4 col-form-label">Diploma</label>
              <div class="col-sm-8">
                <form action="#">
                    <div class="form-group">
                        <input type="file" class="filestyle" data-input="false" data-buttonname="btn-secondary">
                    </div>
                </form>
              </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</form>

这是我的jquery:

$("body").on("click","#addemployeebtn",function(){
    var form = $(this);
    var formdata = false;
    if (window.FormData){
        formdata = new FormData(form[0]);
    }

    var formAction = form.attr('action');
    $.ajax({
        url         : 'includes/addemployee.php',
        data        : formdata ? formdata : form.serialize(),
        cache       : false,
        contentType : false,
        processData : false,
        type        : 'POST',
        success     : function(data, textStatus, jqXHR){
            // Callback code
        }
    });
});

在我的php脚本中,我尝试了以下操作:

echo = $_FILES['filename'];
echo $_POST['file'];
print_r($_FILES);
echo $_FILES['file'];
echo $_FILES['files']['name'][0];

但是当我回显/打印它们时,它们都是空的。

如果我在networktab中查看,就会看到表单已发布,因此我的javascript可以正常工作。

2 个答案:

答案 0 :(得分:0)

我认为问题在于您将点击事件绑定到按钮$("body").on("click","#addemployeebtn",function(){上,但通过执行$(this)var form = $(this);对象引用为表单。

因此,您可以将submit事件绑定到表单ID或从表单ID var form = $('#employeeformadd');引用表单对象。

此外,您还需要删除主窗体<form action="#">中的所有子窗体,并记住也要删除其结束标记</form>

最重要的是:

name="fieldname"像这样<input id="copy_driverslicense" type="file" class="filestyle" data-input="false" data-buttonname="btn-secondary" name="photo1">添加到您的文件字段

答案 1 :(得分:0)

首先,您应该将$(“ body”)。on(“ click”,“#addemployeebtn”,function()替换为 $(“ body”)。on(“ submit”,“#employeeformadd”,function()

所以当您编写var form = $(this);表单对象是指#employeeformadd表单而不是#addemployeebtn提交按钮

其次,您应该给每个输入文件起个名字

因此在php中,您可以通过写入$ _FILES ['diploma'];来访问它

最后,例如,您应该在html中删除不必要的表单标记