前台form表单的提交方式有很多种,例如:
1. form表单submit直接提交的方法
2. Ajax提交的方法
3. jquery提交的方法
4. 原生js提交的方法

每一种方法都有它的优势和不足,有的简单直接,有的写起来复杂,但用起来顺手,最近项目中遇到了一个Ajax 表单提交问题,在这里总结一下ajax提交的两种方式:

1.serialize() 方法:

通过序列化表单值,创建 URL 编码文本字符串。我们可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身。序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中。
所用到的语法为:

$("form").serialize()

这里的$(“form”)操作对象是代表表单元素集合的 jQuery 对象,而不是js对象。

提交方法的代码段:

$('form').submit(function() {
alert($(this).serialize());
return false;
});

最终序列化后,表单中数据会一下面这种方式提交到后台:a=1&b=2&c=3&d=4&e=5
这种方式处理表单时所适用的input标签类型是有限的,只适用于一些常用的类型例如text、checkbox、select、date等等,但是对于file文件类型的input框并不适用,那我们在用到ajax提交方式的时候应该如何提交file类型的input框数据呢?

2.封装FormData 对象,直接用$.ajax提交

论坛上有人提及到FormData的封装方式,将form表单中的内容封装成formdata的数据格式
FormData 对象可以把form中所有表单元素的name与value组成一个queryString,提交到后台,在使用Ajax提交时,使用FormData对象可以减少拼接queryString的工作量。

FormData的使用方法也是非常简单,直接传入form表单对象即可,如下:

var form = $('#form1');
var formdata = new FormData(form);

使用这种方式将数据封装后,file类型的文件数据即可以键值对的方式封装在formdata中,然后用ajx提交,方法如下:

$.ajax({
type : "POST",
url : "houtai/123.do",
data : formData,
async: false,
cache: false,
contentType: false,
processData: false,
success : function(msg) {
if(msg){
alert('提交成功!');
}
}
});

有一点需要注意的是,以formdata的方式提交时需要添加async: false, 同步,否则后台无法接收到前台传过来的file文件数据,这样的提交方式,既可以提交任何一种type类型标签,又可以在提交之后得到返回结果,方便快捷又实用。

关于form表单提交的方式还有很多很多,本文只是关于ajax的两种提交方式总结,希望以后还可以遇到更好用的提交方式或者提交插件。

Ajax serialize()提交form表单不能上传file类型的更多相关文章

  1. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  2. Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request对象方法,属性和Response对象,form表单的上传

    Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV       在Django中存 ...

  3. MVC下form表单一次上传多种类型的图片(每种类型的图片可以上传多张)

    form表单一次上传多种类型的图片(每种类型的图片可以上传多张) controller中的action方法 public ActionResult UploadImage( )        { in ...

  4. ajax post提交form表单 报400错误 解决方法

    昨天晚上做项目遇到了一个奇怪的问题,我用ajax提交一个form表单,后台Java方法用的是一个实体接,但是他根本不进方法体中,直接给我一个400的错误,一开始我以为是我路径的问题(尴尬),结果直接访 ...

  5. jQuery.serialize() 提交form表单

    serialize()函数用于序列化一组表单元素,将表单内容编码为用于提交的字符串. serialize()函数常用于将表单内容序列化,以便用于AJAX提交. 该函数主要根据用于提交的有效表单控件的n ...

  6. SSM+form表单文件上传

    这里介绍SSM如何配置上传文件 配置springmvc.xml: <!--配置上传下载--> <bean id="multipartResolver" class ...

  7. 【温故知新】Java web 开发(三)Form表单与上传下载文件

    简介:在一和二的基础之上,这次来记录下如何在页面提交表单数据,以及文件的上传和下载整个流程,请求也不仅限于GET了,也有POST了. 1. 为了方便,在 webapp 下直接新建一个 index.ht ...

  8. form表单文件上传提交且接口回调显示提交成功

    前端: <form method="post" enctype="multipart/form-data" id="formSubmit&quo ...

  9. AJAX异步提交form表单

    记录: 网上有说怎么做,没说怎么接收,打印了一下数据,记录一下取值: 比如说有如下form: <form id="form1" name="form1" ...

随机推荐

  1. jquery 下拉一屏

  2. js中string常用方法

    charAt(index) 用于返回指定位置的字符,index从0开始计算 concat(string1,string2..),用于字符串拼接: indexOf():用于返回指定字符在字符串中第一次出 ...

  3. 瀑布流(基于Django)

    # 后端 from django.shortcuts import render, HttpResponse from django.http import JsonResponse from app ...

  4. springboot框架笔记

    01.spring data是一个开源的框架,在这个开源的框架中spring  data  api只是其中的一个模块,只需要编写一个接口继承一个类就行了. 02.spring boot框架底层好像将所 ...

  5. dedecms自定义表单提交获取时间跟ip地址

    相信大家在用织梦做网站的时候都用过自定义表单做留言,但是如何查看客户什么时间填写的表单,和客户的IP地址呢? 我在网上找了很多JS文件,但太繁琐了,后来我注意到一个细节,每次我登陆后台,织梦系统都会记 ...

  6. xml文件整理

    xml 97-2003 格式 \s*\n\s*\n\s*\n\s*\n\n(^个人补充信息.*)\n(.*)\n(^总成绩.*)$1$2\n$3(^个人补充信息.*)\n(.*)\n(.*)\n(^总 ...

  7. 1.5 synchronized其他概念

    synchronized锁重入: 关键字synchronized拥有锁重入的功能,也就是使用synchronized时,当一个线程得到了一个对象的锁后,再次请求此对象时是可以再次得到对象的锁. 输出结 ...

  8. NetworkX系列教程(11)-graph和其他数据格式转换

    小书匠 Graph 图论  学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后 ...

  9. Angular动态组件

    一.主页面: app.component.html: <button (click)="load();">动态</button> 2<div #dom ...

  10. 影像优化 OptimizeRaster工具包介绍

    Esri OptimizeRasters是一个高效.可配置的开源工具包. OptimizeRasters提供了以下功能: 影像格式转换和压缩.支持输出优化栅格格式:MRF.分块TIFF.云存储优化Ge ...