springMVC 获取不到ajax post请求传递过来的参数

祥林没有嫂 发布于 2015/04/22 17:45
阅读 24K+
收藏 0

前端代码:

function managerLogin(){
			//debugger;
			var loginName = $("#managerLoginName").textbox("getValue");
			var password = $("#managerPassword").textbox("getValue");
			var loginType = "manager";
			var loginData = {loginName:loginName,password:password,loginType:loginType};
			$.ajax({
				url:"<%=path%>/manager/ajaxLogin",
				type:"post",
				dataType:"json",
				data:loginData,
				success:function(data){
					var result = data.result;
					if(result=="success"){
						window.location = "<%=path%>/views/listDoctor.jsp"
					}
					else if(result=="fail"){
						$.messager.alert("提示","账号或密码错误","error");
					}else{
						alert("error");
					}
				},
				error:function(){
					alert("error");
				}
			});
		}



火狐中查看post请求的参数如上图

后台代码:


@RequestMapping(value="/ajaxLogin", method=RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> login(String loginName, String password, String loginType, HttpSession session){

后台 就是这样一个简单的方法,接收不到post传递过来的参数,进断点时显示几个参数均为null

并且这个问题在本机使用jetty测试时不会出现,部署到线上tomcat就会出现传值失败。求大神指点

我去。。。更灵异的事情出现了,我在服务器上使用catalina 调试的方式启动tomcat就能正常传参!!!!!但是使用start方式启动就没法传参,真的是没招了,求大神大神大神来指点迷津~~~~


以下是问题补充:

@祥林没有嫂:我去。。。更灵异的事情出现了,我在服务器上使用catalina 调试的方式启动tomcat就能正常传参!!!!!但是使用start方式启动就没法传参,真的是没招了,求大神大神大神来指点迷津~~~~ (2015/04/23 02:25)
加载中
0
逝水fox
逝水fox

参数需要@RequestParam("loginName") 等的注解,更多设置看这个注解的参数

Java的代码,除非是编译的时候有特别的设置(debug模式)方法的形参名和局部变量名都不会带到class文件里面的

祥林没有嫂
祥林没有嫂
嗯 查了一些关于这个注解的文章,有一点理解了。另外,每次部署如果不清缓存,下次启动就还是会出现参数接收不到的问题,现在每次都要清一下缓存,这样正常么
逝水fox
逝水fox
回复 @半天说不出 : 意思是,不要单靠局部变量名(包括方法参数名)来完成配置,虽然简单,Java的编译除非是特殊的debug编译,默认这些名字是不会带上的。
祥林没有嫂
祥林没有嫂
这个注解还是没弄懂,不过加上了(value="loginName",required="true")后就成功了,只加上("loginName")还是不行。 虽然问题解决了, 还是很困惑,springMVC的注解还是要再细细研究啊,,,多谢大神!哈哈
0
vvtf
vvtf
我今天遇到了一次是iOS请求,参数都为空。
祥林没有嫂
祥林没有嫂
额 IOS。。一听都好厉害的样子,哈哈哈哈
0
蕃薯哥哥
蕃薯哥哥

这个试一下:

1. var loginData = {loginName:loginName,password:password,loginType:loginType};

这里把json对象转成json字符串,JSON.Stringify(loginData)


2. 后台参数接收时候加上RequestBody标签

public Map<String, Object> login(@RequestBody("loginName") String loginName, String password, String loginType, HttpSession session){

祥林没有嫂
祥林没有嫂
嗯 这种方案也试过了,还是获取不到。。。。汗,让我纳闷的就是在本机上部署后可用,放到服务器上就不行了,一定是什么地方配置或者什么细小的地方我漏了。。。。继续找,多谢大家回复
0
nightmare123
nightmare123
就传个文本就行了,非要传json格式干嘛?
0
平安北京
用request获取试试,如果状态是200应该没啥问题的
祥林没有嫂
祥林没有嫂
嗯 试过了,也还是获取不到,现在还在找问题,一定是什么细微的地方我疏忽了,继续吧~
0
Jack_Q
Jack_Q
重新装tomcat
祥林没有嫂
祥林没有嫂
服务器上的,岂是随随便便就重装。。。
0
南湖船老大
南湖船老大
request.getInputStream();
这样获取原始输入流么,然后打印看看
0
饮其流者怀其源

楼主你好,您这个问题是怎么解决的呢,我这也出现了和你类似的问题,就是部署到线上不好使,但是自己测试却一点问题没有,呜呜呜

返回顶部
顶部