通过php中的ajax发布将文件和表单数据一起发送

时间:2020-05-13 21:47:55

标签: php jquery ajax

这就是我想要做的。

我正在表单上上传文件,并通过ajax发送数据。

这是我的代码:

    <form enctype="multipart/form-data" name="addcert_form" id="addcert_form" method="post" >
       <input type='hidden' id="staffid" name="staffid" value="<?php echo $staffid; ?>" />

        <label for="certNumber"><?php echo("Certification Number"); ?></label>
        <input type="text" class="form-control certNumber" id="certNumber" name="certNumber"  >

         <div class="form-group" style="margin-bottom: 0px;margin-left: 15px;">
            <label for="file-upload"><?php echo('File Upload'); ?></label>
                <input type='hidden' id="file-upload-hidden" name="file-upload-hidden" />
                 <input type="file" name="file-upload" id="file-upload" accept="application/pdf">                
         </div> 
    </form>


     $(document).on('change', "#cert-upload", function() {
       var ajaxurl = generalObj.ajax_url; 
       var form = $("#addcert_form");
       var params = form.serializeArray();

       var formData = new FormData();                          
       var file_data = $('#file-upload').prop('files')[0];

       $(params).each(function (index, element) {         
         formData.append(element.name, element.value);
       });

     formData.append('file-upload', file_data);

     $.ajax({
        url: ajaxurl + "rzvy_staff_ajax.php",
        data: formData,        
        cache: false,
        contentType: false,
        processData: false, 
        type: 'POST',
       success: function (res) {
        if(res=="file-uploaded"){
            swal.fire(generalObj.updated, generalObj.cert-upload_changed, "success");
            //location.reload();
        }     
    }
});
  });

但是,当我看到信息时,我只会得到文件信息。

我尝试做$ _POST和$ _FILES,但是,我没有从表单中获取信息。上传文件时如何从表单中获取所有信息?

谢谢, 凯文

1 个答案:

答案 0 :(得分:0)

这是我发现的。数据即将过去,我应该同时使用$ _FILES和$ _POST