首页 > 解决方案 > 如何使用 Ajax-Php 处理多个表单

问题描述

在 HTML 页面上,我有两个表单。Form1 包含几个输入。Form2 用于将文件上传到服务器,因此按下“上传”按钮会通过 Ajax 调用一个 php,该 php 处理文件并将其上传到服务器。我遇到的问题是我找不到一种方法来实现,当按下“上传”按钮时,文件会像现在一样上传到服务器,但也可以处理 form1 中的数据并将其保存在数据库。

<form method="POST" id="frm_one>
   <input type="text" class="form-control" placeholder="Sol." aria-label="sc" aria-describedby="basic-addon1">
   <input type="text" class="form-control" placeholder="ID DOC" aria-label="Username" aria-describedby="basic-addon1">
</form>

<form method="POST" id="frm_two>
   <input type="text" class="form-control" placeholder="Piece" aria-label="sc" aria-describedby="basic-addon1">
   <input type="text" class="form-control" placeholder="Order" aria-label="Username" aria-describedby="basic-addon1">
</form>

<form action="procesar.php" method="POST" enctype="multipart/form-data" id="frm_subedoc">
   <input class="form-control p-1 border" type="file" name="file[]" id="selarchivos" multiple>
   <button type="button" class="btn btn-info form-control mt-3" id="btn_subir">Subir Archivos</button>
</form>

通过 Ajax 发送如下:

            $("#btn_subir").click(function(){
               var Form=new FormData($("#frm_subedoc")[0]);
               $.ajax({
                   url:"procesar.php",
                   type:"post",
                   data:Form,
                   processData:false,
                   contentType:false,
                   success: function(data){
                       $("#selarchivos").val('');
                   }
               });
           });           

接收请求的 PHP 是:

<?php
   session_start();
   $carpeta="documentos/";
   $files_post=$_FILES['file']; 
   .
   .
   .
?>

问题是,如果我使用单个表单,我在 form2 中声明的参数 ' enctype="multipart/form-data"会发生什么情况?会影响输入中传递的数据?。另外,如果你修改我在PHP中恢复数据的方式,即$_POST['field']

标签: phphtmlajax

解决方案


老实说,我不再使用很多插件,但这是我一直在使用的插件。为什么要重新发明轮子?

Ravi Kusuma 的 jQuery 文件上传插件

对于您的情况,在API & OPTIONS他的文档页面上的选项卡上,请注意您可以随文件一起发送其他数据:

dynamicFormData: function()
{
    //var data ="XYZ=1&ABCD=2";
    var data ={"XYZ":1,"ABCD":2};
    return data;        
}

因此,在包含您的 AJAX 例程的函数中,您可以首先从其他表单中收集字段名称/值并将它们放入 javascript 对象中。然后,您可以使用上面的代码将该对象发送到接收该文件的服务器端配套 PHP 脚本。

还要注意Server Side选项卡,它记录了后端 PHP 文件的外观。

参考:

在模态窗口内上传PHP文件

为什么图像没有复制到文件夹中?

http://hayageek.com/docs/jquery-upload-file.php


推荐阅读