这种类型的提交, 必须配合 multipartResolver,

$("button:submit").click(function(){
$.ajax({
type : 'POST',
url : '${sys_config.root_path}/login.html',
cache:false,
processData:false,
contentType:false,
data : new FormData($('#login_form')[0]),
dataType : "json"
}).done(function(data) {
if (data.success) {
//...
}
});
return false;
});

需要在Spring配置文件中使用, 没有这个的话, request中的parametersMap是空的

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="10240000"/>
</bean>

在dependency中要添加commons-fileupload.

在Controller中, 使用正常的方式即可

@RequestMapping(value = {"/login"}, method = RequestMethod.POST, produces="application/json;charset=UTF-8")
@ResponseBody
public String doLoginPost()
{
Map<String, String[]> params = getRequest().getParameterMap();
..
}

另外在Spring的配置中还需要注意添加 content-negotiation-manager, 没有这个的话, 使用produces="application/json"会出406错误. 其中关键的一个参数是favorPathExtension, 这个必须为false, 另外ignoreAcceptHeader这个参数不能加, 加上也会导致406.

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />

    <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<!-- Turn off working out content type based on URL file extension, should fall back to looking at the Accept headers -->
<!-- Disabled path extension. Note that favor does not mean use one approach in preference to another, it just enables
or disables it. The order of checking is always path extension, parameter, Accept header -->
<property name="favorPathExtension" value="false" />
<!-- Enable the use of the URL parameter -->
<property name="favorParameter" value="true" />
<!-- Don't use the JAF, instead specify the media type mappings manually - we only wish to support JSON and XML -->
<property name="useJaf" value="false"/>
<property name="defaultContentType" value="text/html" />
<property name="mediaTypes" >
<value>
json=application/json
xml=application/xml
</value>
</property>
</bean>

对于普通的提交, 使用这种方式即可, 不需要multipartResolver

    $("button:submit").click(function(){
$.ajax({
type : 'POST',
url : '${sys_config.root_path}/login.html',
cache:false,
data : $('#login_form').serialize(),//new FormData($('#login_form')[0]),
dataType : "json"
}).done(function(data) {
//...
});
return false;
});
favorPathExtension

SpringMVC的Ajax提交的更多相关文章

  1. SpringMVC关于ajax提交400错误(后台获取为null)

    400错误有三种情况 1:请求的数据量过大,不过这种情况一般很少见. 2:请求的data参数有误,确保每一个参数都能请求到. 注释:之前小白出现400错误,后台获取参数为null是因为第三种情况,经过 ...

  2. SpringMVC之ajax与表单 Post 数据提交差异小结

    最近在写一个富文本框的后台数据服务的时候遇到一些关于 ajax 提交与 表单提交的比较特殊的案例,这里拿来跟大家分享,希望能让大家有所启发. 1. 首先是常见表单提交在SpringMVC的控制器中的代 ...

  3. 用ajax提交form表单及乱码问题

    要求 1. form里是习题和选择的答案包含内容较多,直接用ajax获取页面元素较多,麻烦. 2. 也不能直接用form提交,form提交后会跳转页面,如果出错想在本页面获取错误信息(ajax提交)且 ...

  4. 使用ajax提交form表单,包括ajax文件上传

    前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的aja ...

  5. SpringMVC——对Ajax的处理(包含 JSON 类型)

    一.首先要搞明白的一些事情. 1.从客户端来看,需要搞明白: (1)要发送什么样格式的 JSON 数据才能被服务器端的 SpringMVC 很便捷的处理,怎么才能让我们写更少的代码,如何做好 JSON ...

  6. springMVC+jsp+ajax上传文件

    工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML <body> <form id="myform" method ...

  7. aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到

    aJax提交与普通提交是两种迥异的提交方式,这两种提交方式决定了客户端与服务端交互时存储.传输数据的方式也不同. aJax提交,客户端的请求数据存储在data中,服务端用request.getPara ...

  8. 使用ajax提交form表单(转)

    前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的aja ...

  9. 使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html

    使用ajax提交form表单,包括ajax文件上传 前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },&qu ...

随机推荐

  1. git 上的pull request 是什么意思?

    1.git 上有常见的pull request 功能 2.pull request 的含义 解释一:    有一个仓库,叫Repo A.你如果要往里贡献代码,首先要Fork这个Repo,于是在你的Gi ...

  2. Loader加载器

    今天学到了这个Loader,浅谈一下自己的看法: 1.定义 Loader是一个加载器,可以用来它访问数据,可以看做访问数据的机器(好比挖掘机).装再器从android3.0开始引进,它使得在activ ...

  3. C#复习④

    C#复习④ 2016年6月16日 12:37 Main Classes and Structs 类和结构体 1.Contents of Classes 字段,常量,方法,构造函数,析构函数: 特性,事 ...

  4. The Accidental DBA

    The Accidental DBA (Day 1 of 30): Hardware Selection: CPU and Memory Considerations 本文大意:      全篇主要讲 ...

  5. Dubbo 分布式服务框架(spring、zookeeper)

    DUBBO DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架, alibaba资源 源码:https://github.com ...

  6. 编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能

    package com.hanqi.test; //银行账号 public class account { private String zhanghao;//账号 //私有余额 private do ...

  7. c# FTP操作类

    using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net ...

  8. 烂泥:高负载均衡学习haproxy之安装与配置

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 有关高负载均衡的软件,目前使用比较多的是haproxy.nginx和lvs.下面我们就开始学习haprxoy这款软件. 一.haproxy介绍 以下开始介 ...

  9. 地图编辑器V1

    功能:1. 拖放地图元素至地图编辑器中2. 可设置参考图3. 背景图可平铺,中央,左上角等放置4. 地图上的元素可旋转,可删除,可拖动5. 保存地图数据时同时生成XML格式的地图信息 -------- ...

  10. Brackets(bestcoder)

    Brakerts 每次询问一个区间都根据最开始的线段树在询问的区间重建一棵线段树 view code#include <iostream> #include <cstdio> ...