SpringMVC的Ajax提交
这种类型的提交, 必须配合 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提交的更多相关文章
- SpringMVC关于ajax提交400错误(后台获取为null)
		
400错误有三种情况 1:请求的数据量过大,不过这种情况一般很少见. 2:请求的data参数有误,确保每一个参数都能请求到. 注释:之前小白出现400错误,后台获取参数为null是因为第三种情况,经过 ...
 - SpringMVC之ajax与表单 Post 数据提交差异小结
		
最近在写一个富文本框的后台数据服务的时候遇到一些关于 ajax 提交与 表单提交的比较特殊的案例,这里拿来跟大家分享,希望能让大家有所启发. 1. 首先是常见表单提交在SpringMVC的控制器中的代 ...
 - 用ajax提交form表单及乱码问题
		
要求 1. form里是习题和选择的答案包含内容较多,直接用ajax获取页面元素较多,麻烦. 2. 也不能直接用form提交,form提交后会跳转页面,如果出错想在本页面获取错误信息(ajax提交)且 ...
 - 使用ajax提交form表单,包括ajax文件上传
		
前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的aja ...
 - SpringMVC——对Ajax的处理(包含 JSON 类型)
		
一.首先要搞明白的一些事情. 1.从客户端来看,需要搞明白: (1)要发送什么样格式的 JSON 数据才能被服务器端的 SpringMVC 很便捷的处理,怎么才能让我们写更少的代码,如何做好 JSON ...
 - springMVC+jsp+ajax上传文件
		
工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML <body> <form id="myform" method ...
 - aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到
		
aJax提交与普通提交是两种迥异的提交方式,这两种提交方式决定了客户端与服务端交互时存储.传输数据的方式也不同. aJax提交,客户端的请求数据存储在data中,服务端用request.getPara ...
 - 使用ajax提交form表单(转)
		
前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的aja ...
 - 使用ajax提交form表单,包括ajax文件上传  转http://www.cnblogs.com/zhuxiaojie/p/4783939.html
		
使用ajax提交form表单,包括ajax文件上传 前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },&qu ...
 
随机推荐
- IOS开发——01_第一个OC程序
			
本文目录 一.新建Xcode项目 二.运行项目 注:建议先学习C语言, 如果你还没有编程经验,看不懂的地方可以在评论区提出,本文使用的为Xcode6.1版本,与之前版本会有所差异,但总体不变. 另:还 ...
 - socket编程中客户端常用函数 以及简单实现
			
1 常用函数 1.1 connect() int connect(int sockfd, const struct sockaddr *servaddr, socklen_taddrlen); 客 ...
 - 转:SVN常见问题与解决方法
			
今天发现一个SVN很奇葩的问题.原来SVN提交的时候也是识别提交路径的大小写的... 发现网上有篇博客总结的挺好的.转载下来,转载出路:http://blog.csdn.net/shinn613/ar ...
 - 振奋人心啊!!!!下一代.NET——ASP.NET vNext
			
这两天看到的.NET的新闻都好振奋人心啊!微软北美技术大会带来了好多好消息! 看到一篇博客园的文章,感觉太棒了.摘录下来.原文链接:http://news.cnblogs.com/n/208133/ ...
 - 重启 IIS7 应用程序池的批处理
			
批处理很简单:c:\windows\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"ASP.NET v4.0"c:\ ...
 - .net开发中常用的第三方组件
			
.net开发中常用的第三方组件 2013-05-09 09:33:32| 分类: dotnet |举报 |字号 订阅 下载LOFTER 我的照片书 | RSS.NET.dll RSS. ...
 - 6、后记:PMO项目管理 - PMO项目管理办公室
			
PMO项目管理办公室的作用,按笔者所简化的理解,其作用就是将项目资源标准化.规范化.文档化.然后,根据实际的项目情况,对项目间的资源内容进行协调沟通和培训,让项目组能够更快更好的完成项目建设任务. 不 ...
 - JavaScript(三)——DOM操作一
			
一.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 二.Window对象操作 1.属性和方法: 属性(值或者子对象): op ...
 - [MySQL Reference Manual] 6 安全性
			
6. 安全性 在Mysql安装配置时要考虑安全性的影响,以下几点: Ÿ 常规因素影响安全性 Ÿ 程序自身安全性 Ÿ 数据库内部的安全性,即,访问控制 Ÿ 网络安全性和系统安全性 Ÿ ...
 - Spring中@Autowired注解、@Resource注解的区别
			
Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...