ajax同时提交表单且包含文件

说明一下:FormData对象是html5的一个对象,目前的一些主流的浏览器都已经兼容。ie8暂时不支持,不支持FormData的,可以使用方法二,下面会介绍。接着说FormData,它是一个html5的javascript对象,非常的强大。废话不说,直接上代码

方法1

var formData = new FormData($("#passengerForm")[0]);//此处id为form表单的id

 $.ajax({  
                      url: "${basePath}/order/importPassengerExcel.json" ,  
                      type: 'POST',  
                      data: formData,  
                      async: false,  
                      cache: false,  
                      contentType: false,  
                      processData: false,  
                      success: function (data) {  
                          if(data.messageFlag.flag=="1"){
                          
                           layer.msg("导入成功",{time:2000});
                      }else{
                              layer.msg("导入错误",{time:2000});
                          }
                      },  
                      error: function (data) {  
                          layer.msg("导入错误",{time:2000});
                      }  
                 });

方法2

使用jquery.form.js(可以具体查看api)

<form id="tf">
            <input type="file" name="img"/> <input type="text" name="username"/> <input type="button" value="提" onclick="test();"/> </form>

$("#tf").ajaxSubmit();

后台代码
if (certificate==null ||certificate.isEmpty()) {
        } else {
            // 获取上传文件的名称
            String fileName = certificate.getOriginalFilename();
            // 获取图片的扩展名
            String extensionName = fileName
                    .substring(fileName.lastIndexOf(".") + 1);
            // 重命名上传后的文件名
            String imgname = MD5.encrypt(UUID.randomUUID().toString()) + "."
                    + extensionName;
            try {
                String imgPath = PropertyUtils.getValue("sftpdirectory_images");
                File targetFile = new File(imgPath, imgname);
    if (!targetFile.exists()) {//此处判断不是特别理解
                    targetFile.mkdirs();
                    certificate.transferTo(targetFile);
                } else {
                    logger.error("上传失败");
                }
                saveImgUrl = imgname;
            } catch (Exception e) {
                flag="2";
                logger.error("上传失败", e);
            }
        }

 

转载于:https://www.cnblogs.com/zxg-blog/p/6743094.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过ajax提交form单数据到php可以实现页面无需刷新即可提交数据,并且可以异步处理服务器的响应。 首先,需要在HTML中引入jQuery或其他的ajax库,以方便使用ajax函数。然后,在form单的提交事件中使用ajax函数来处理提交。 具体实现步骤如下: 1. 编写HTML单代码,包含需要提交的各种输入字段和一个提交按钮。 2. 使用JavaScript/jQuery监听单的提交事件: ```javascript $('#form_id').submit(function(event) { event.preventDefault(); // 阻止单的默认提交动作 // 获取单数据 var formData = $(this).serialize(); // 发送ajax请求 $.ajax({ url: '处理数据的php文件路径', type: 'POST', data: formData, success: function(response) { // 响应成功时的操作 }, error: function(xhr, status, error) { // 响应失败时的操作 } }); }); ``` 其中,`form_id`是单的ID,`处理数据的php文件路径`是处理提交数据的服务器端脚本文件路径。 3. 在服务器端的PHP脚本中,使用`$_POST`超全局数组来获取通过ajax提交单数据,进行相应的处理,然后返回处理结果给前端。 ```php <?php // 获取单数据 $data1 = $_POST['input1_name']; $data2 = $_POST['input2_name']; // 进行数据处理或其他操作 //... // 返回处理结果给前端 echo $result; ?> ``` 以上就是通过ajax提交form单数据到PHP的简单实现过程。通过这种方式,可以实现页面的异步提交,并在不刷新页面的情况下与服务器进行交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值