因为项目中需要达到效果:前台点击按钮弹出文件选择框,选择文件确定之后,上传到后台对文件进行处理并给出响应信息。

尝试过使用$.post,$.ajsx,将表单序列化之后传到后台,但是后台并不能收到文件,查找资料后得知:

.serialize()序列化表单,提交按钮的值不会被序列化。另外,如果想要一个表单元素的值被序列化成字符串,这个元素必须含有 name 属性。此外,复选框(checkbox)和单选按钮(radio)(input类型为 "radio" 或 "checkbox")的值只有在被选中时才会被序列化。另外,文件选择元素的数据也不会被序列化。

后面使用了Jquery.form插件来完成了该功能。

前台:

1.导入jquery.min.js和jquery.form.min.js

<script type="text/javascript" src="${ctxStatic}/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="${ctxStatic}/js/jquery.form.min.js"></script>

2.设置按钮和隐藏表单

 <a class="btn btn-small btn-success" onclick="javascript:inportAdvertiserList();">导入</a>

<div style="display: none">
<form class="form-inline" id="uploadexcel" name="uploadexcel" action="" method="post" style="padding-bottom: 10px;" enctype="multipart/form-data">
<input type="file" name="excelFile" id="excelFile" onchange="javascript:submitexcelFile()">
</form>
</div>

这里按钮是超链接改变样式来实现按钮,普通按钮也可以。div默认位隐藏

3.对应的js函数

<script type="text/javascript">

 function inportAdvertiserList()
{
$("#excelFile").click();
} function submitexcelFile()
{ $("#uploadexcel").ajaxSubmit({
url: "${ctx}/advertiser/inportAdvertiserList",
type: "post",
enctype: 'multipart/form-data',
// iframe: true,
dataType:'json',
success: function (data)
{
//var msg = eval(data);
alert(data.errMsg);
window.location.reload();
},
error: function (data)
{
//var msg = eval(data);
alert("出错");//msg.errCode
}
})
} </script>

这里注意Id选择器和input的name(后台取值会用到),url位后台地址

后台:

@RequestMapping(value = {"inportAdvertiserList"})
public
@ResponseBody
ErrorMsg inportAdvertiserList(MultipartFile excelFile, ModelAndView model,
HttpServletRequest request, HttpServletResponse response)
{
String[] tableHander = {"平台", "账户ID", "账户名称", "是否ROI账户", "客户名称", "销售人员"};
String[] fileNames = {"platformName", "advertiser_id", "corporation_name", "roi", "customerName", "solder.name"};
List<Object> list = null;
list = ExcelUtil.readExcel(excelFile, Advertiser.class, tableHander, fileNames);
}

后台是ssm构建的,

@RequestMapping(value = {"inportAdvertiserList"})用来设置请求url,
 @ResponseBody用来标记返回指,可以将返回值转换成json数据返回(需要导入相关包)。
后台可以MultipartFile excelFile来取到前台input传过来的file 这次项目中是需要取到前台传过来的excel并解析其中的数据,将其转换为对象存入数据库,部分数据公司相关,后面就不写了。

异步提交表单插件jquery.form.min.js的使用实例的更多相关文章

  1. jquery提交form表单插件jquery.form.js

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Form表单插件jquery.form.js

    常常使用到这个插件,但是老忘记怎么使用,现在对大家写的进行一定的整合. 使用插件实例: 一般的使用方法 <!-- 引入jquery文件 --> <script src="h ...

  3. jQuery插件 -- Form表单插件jquery.form.js<转>

    jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Form有两个核心方法 -- ajaxForm() 和 ajaxSubmi ...

  4. (转)jQuery插件 -- Form表单插件jquery.form.js

    beforeSubmit: validate function validate(formData, jqForm, options) { //在这里对表单进行验证,如果不符合规则,将返回false来 ...

  5. jquery-jquery异步提交表单插件

    使用jquery.form可以异步提交文件或者表单,下面的代码演示了如何提交文件 http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js <s ...

  6. jQuery插件 -- Form表单插件jquery.form.js

    http://blog.csdn.net/zzq58157383/article/details/7718956 http://my.oschina.net/i33/blog/77250

  7. jQuery.Form.js 异步提交表单使用总结

    jQuery.Form.js 是一个用于使用jQuery异步提交表单的插件,它使用方法简单,支持同步和异步两种方式提交. 第一步:引入jQuery与jQuery.Form.js <script ...

  8. AJAX提交表单后要清空,否则再次提交原来的数据会认为重复提交,提交失败。使用ajaxSubmit 函数需要引入jquery.form.min.js 文件

    <script src="../../Scripts/js/jquery.form.min.js" type="text/javascript">& ...

  9. 雷林鹏分享:jQuery EasyUI 表单 - 创建异步提交表单

    jQuery EasyUI 表单 - 创建异步提交表单 本教程向您展示如何通过 easyui 提交一个表单(Form).我们创建一个带有 name.email 和 phone 字段的表单.通过使用 e ...

随机推荐

  1. 汇智课堂 Node.js相关课程

    Node.js入门 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的 易于扩展的网络应用· Node.js 借助事件驱动, 非阻塞I/O 模型 ...

  2. 【转载】ARM MMU详解

    一.MMU的产生       许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以 ...

  3. instanceof判断参数是否是给定的类型

    if(ofj instanceof CLOB) {//判断ofj是否是CLOB类型,如果是则把CLOB内容解析出来,放入TZNR字段中并返回 CLOB ft = (CLOB)ofj; String c ...

  4. JS生成随机字符串的多种方法

    这篇文章主要介绍了JS生成随机字符串的方法,需要的朋友可以参考下 下面的一段代码,整理电脑时,记录备查. <script language="javascript"> ...

  5. docker+MySQL+读写分离

    一.拉取mysql镜像文件docker pull mysql二.查看镜像docker images三.创建配置文件目录mkdir /data/docker/mysql/{master,slave} - ...

  6. 1141 PAT Ranking of Institutions[难]

    1141 PAT Ranking of Institutions (25 分) After each PAT, the PAT Center will announce the ranking of ...

  7. (转)CentOs7.3 搭建 RabbitMQ 3.6 Cluster 集群服务与使用

    RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.ActionScript.XMPP.STO ...

  8. Python误区之strip,lstrip,rstrip

    最近在处理数据的时候,想把一个字符串开头的“)”符号去掉,所以使用targetStr.lstrip(")"),发现在 将处理完的数据插入到数据库时会出现编码报错,于是在网上搜到了这 ...

  9. mariadb多源复制 muiltil source replication

    环境:centos-6.5      Mariadb:10.1.13-MariaDB 多源复制:企业数据库中写的需求较大,以至于I/O负载比较大,那么就必须把写的操作分摊到多台主服务器上进行,然后在将 ...

  10. JavaScript:学习笔记(8)——对象扩展运算符

    JavaScript:学习笔记(8)——扩展运算符 对象的扩展运算符 扩展运算符是三个点(...).用于取出参数对象的所有可遍历属性,然后拷贝到当前对象之中. 如上图所示,新建了一个对象a,然后通过扩 ...