Spring MVC无法获取ajax POST的参数和值
一、怎么会这个样子
很简单的一个想法,ajax以POST的方式提交一个表单,Spring MVC解析。然而一次次的打印null折磨了我整整一天……
最后的解决现在看来是很明显的问题,“只是当时已惘然”……
学海无涯!学海无涯!学海无涯!
二、简单的原罪
ajax提交的代码如下:
<script type="text/javascript">
$(document).ready(function() {
$("#submit").click(function(e) {
e.preventDefault();
var obj = $(this);
var name = $("input[name='name']").val();
var phone = $("input[name='phone']").val();
$.ajax({
url : "userAsk",
type : "POST",
contentType : "application/json;charset=utf-8",
data : {name:name,phone:phone},
//dataType : "text",
success : function(result, status, req) {
$(".noticeInfo").css("display", "block");
},
error : function(req, status, reason) {
$(".noticeInfo").css("display", "block").text('Error:' + reason);
}
})
return false;
})
});
</script>
三、纠结的后台
顺便复习一下Spring MVC的取值方式:
1. 通过注解PathVariable获取url中的值。
@RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET)
public String myController(@PathVariable String id,@PathVariable String name, ModelMap model) {
……
return "ok";
}
2.通过注解RequestParam获取传递过来的值。
@RequestMapping(value = "/test", method = RequestMethod.POST)
public String myTest(@RequestParam("name") String name,@RequestParam("phone") String phone, ModelMap model) {
……
return "ok";
}
3.通过源生的HttpServletRequest自己动手取值。
@RequestMapping(value="/test" method = RequestMethod.POST)
public String get(HttpServletRequest request, HttpServletResponse response) {
String name = request.getParameter("name"));
return "ok";
}
4.通过注解ModelAttribute直接映射表单中的参数到POJO。
注:暂时没用过,一般这种情况我用JSON序列化。
上面的方法我各种尝试,一直无情的打印null。
四、怀疑后台有没有收到数据?
BufferedReader br;
try {
br = req.getReader();
String str, wholeStr = "";
while((str = br.readLine()) != null){
wholeStr += str;
}
System.out.println(wholeStr);
} catch (IOException e) {
e.printStackTrace();
}
打印出来的字符串和前端发送的数据一模一样……
五、最后的真相……
我用了最原始的方法,重新写了一个一模一样的表单,这个表单不用ajax,而用form提交。后台能打印出数据了!
对比两个前端的http请求数据,修改了一下ajax提交的数据格式,解决了:
contentType : "application/x-www-form-urlencoded",
也就是说:收到ajax请求,Spring MVC根据“数据类型指示”,按照json格式解析收到的请求。
但是看起来name=lings&phone=13899999999这种以表单数据格式提交的字符串无法匹配json解析。
重新指示数据类型后,上面的取值方法都是可行的。
Spring MVC无法获取ajax POST的参数和值的更多相关文章
- Spring MVC如何获取请求中的参数
目录 一.获取URL中路径参数 1.1 @PathVariable 注解 1.2 @PathParam 注解 二.获取请求参数: 2.1 GET请求 2.1.1 获取请求中的单个参数:@Request ...
- 为何Spring MVC可获取到方法参数名,而MyBatis却不行?【享学Spring MVC】
每篇一句 胡适:多谈些问题,少聊些主义 前言 Spring MVC和MyBatis作为当下最为流行的两个框架,大家平时开发中都在用.如果你往深了一步去思考,你应该会有这样的疑问: 在使用Spring ...
- Spring MVC(三)--控制器接受普通请求参数
Spring MVC中控制器接受参数的类方式有以下几种: 普通参数:只要保证前端参数名称和传入控制器的参数名称一致即可,适合参数较少的情况: pojo类型:如果前端传的是一个pojo对象,只要保证参数 ...
- 使用Spring mvc接收整个url地址及参数时注意事项
使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...
- spring MVC中获取request和response:
spring MVC中获取request和response: HttpServletRequest request = ((ServletRequestAttributes) RequestConte ...
- 解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容
解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容 解决方案 在 Web.xml文件中 加入以下代码 <!--解决ajax Put与Del请求无法接收到传输的内容-- ...
- Spring MVC中获取当前项目的路径
Spring MVC中获取当前项目的路径 在web.xml中加入以下内容 <!--获取项目路径--> <context-param> <param-name>web ...
- 使用JS,获取URL中指定参数的值
/** * 获取URL中指定参数的值 * * @param name 参数名称 * @returns */ function getQueryString(name) { var reg = new ...
- .net core 无法获取本地变量或参数的值,因为它在此指令指针中不可用,可能是因为它已经被优化掉了
使用vs 发布.net CORE 项目,调试遇到了“无法获取本地变量或参数的值,因为它在此指令指针中不可用,可能是因为它已经被优化掉了”这个问题,弄了半天才发现是发布的时候没有设置为debug,做个总 ...
随机推荐
- yii2购物车实现
1.商品列表中点击加入购物车,则跳转到购物车列表,效果如图所示: 视图代码goods/list.php中.代码如下: <?php echo Html::a('加入购物车',['cart','id ...
- C++笔试题(部分)
1.简述C++11和Boost 2.struct和union与class的区别 3.为什么C++中调用被C编译器编译后的函数要加extern C声明? 4.以下代码哪里不对? #pragma regi ...
- 【NOIP模拟赛】秦时明月
秦时明月 (sword.cpp/c/pas) [问题描述] 卫庄与盖聂又要论剑了,因为渊虹和鲨齿都是天下名剑,论剑容易互相损伤,太过可惜,于是两位换了两把木剑.因为木剑质地不匀,剑的每一段都有一个 ...
- Hadoop :map+shuffle+reduce和YARN笔记分享
今天做了一个hadoop分享,总结下来,包括mapreduce,及shuffle深度讲解,还有YARN框架的详细说明等. v\:* {behavior:url(#default#VML);} o\:* ...
- Android中的通知—Notification 自定义通知
Android中Notification通知的实现步骤: 1.获取NotificationManager对象NotificationManager的三个公共方法:①cancel(int id) 取消以 ...
- Linux 编程中的API函数和系统调用的关系【转】
转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...
- 点评js异步加载的4种方式
主要介绍了点评js异步加载的4种方式,帮助大家更全面的了解js异步加载方式,感兴趣的小伙伴们可以参考一下 js异步加载的4种方式,点评开始. <!DOCTYPE html> <htm ...
- 深入理解GCD(一)
虽然 GCD 已经出现过一段时间了,但不是每个人都明了其主要内容.这是可以理解的:并发一直很棘手,而 GCD 是基于 C 的 API ,它们就像一组尖锐的棱角戳进 Objective-C 的平滑世界. ...
- 20145227 《Java程序设计》第9周学习总结
20145227 <Java程序设计>第9周学习总结 教材学习内容总结 1.JDBC简介 JDBC全名Java DataBase Connectivity,是java联机数据库的标准规范. ...
- jar的下载地址及其使用说明
有时候会苦于jar的搜索.这里我就给出我平时用到的吧,方便大家.后期会不断添加. 1.dom4j-1.6.1.jar 主要用于解析xml的jar包.下载地址: http://pan.baidu.c ...