NutzCN Logo
问答 ajax 发送post 请求,后台不能获取到参数
发布于 2595天前 作者 qq_29012a4f 8410 次浏览 复制 上一个帖子 下一个帖子
标签:

$.ajax({
type : "post",
url : "${ctx}/admin/login",
data : {
"username" : username,
"password" : pass
},
dataType : "json",
success : function(data) {
if (data.ok) {
window.location.href = "${ctx}/admin/index";
dispose();
} else {
alert(data.message);
alert("用户名或者密码错误");
}
},
error : function(e) {

          }
         });

@At
@Ok("json")
public Object login(@Param("username") String username,
@Param("password") String password, Ioc ioc, HttpServletRequest req) {
NutMap re = new NutMap();
re.put("message", "接收不到用户名或者密码" + username + "==" + password);

    if (username == null || password == null) {
       re.put("message", "接收不到用户名或者密码" + username + "==" + password);
       re.put("ok", false);
       return re;
    }

}

45 回复

贴代码用 "插入代码" 按钮, 重新贴一下吧, 还有后台日志也要贴一下

@At
	@Ok("json")
	public Object login(@Param("username") String username,
			@Param("password") String password, Ioc ioc, HttpServletRequest req) {
		NutMap re = new NutMap();
		re.put("message", "接收不到用户名或者密码" + username + "==" + password);
		
		if (username == null || password == null) {
			re.put("message", "接收不到用户名或者密码" + username + "==" + password);
			re.put("ok", false);
			return re;
		}
		}
$.ajax({
					type : "post",
					url : "${ctx}/admin/login",
					data : {
						"username" : username,
						"password" : pass
					},
					dataType : "json",
					success : function(data) {
						if (data.ok) {
							window.location.href = "${ctx}/admin/index";
							dispose();
						} else {
							alert(data.message);
							alert("用户名或者密码错误");
						}
					},
					error : function(e) {

					}
				});
$.ajax({
					type : "post",
					url : "${ctx}/admin/login",
					data : {
						"username" : username,
						"password" : pass
					},
					dataType : "json",
					success : function(data) {
						if (data.ok) {
							window.location.href = "${ctx}/admin/index";
							dispose();
						} else {
							alert(data.message);
							alert("用户名或者密码错误");
						}
					},
					error : function(e) {

					}
				});

我本地环境是可以运行的,但是在服务器上面就获取不到参数。

DEBUG - Found mapping for [POST] path=/admin/login : AdminModule.login(AdminModule.java:71)
DEBUG - Get 'adminModule'<class com.scpz.module.AdminModule>
DEBUG - SELECT * FROM t_user  WHERE name=? AND passwd=? LIMIT 0, 1 
    |     1 |                                2 |
    |-------|----------------------------------|
    | admin | E10ADC3949BA59ABBE56E057F20F883E |
  For example:> "SELECT * FROM t_user  WHERE name='admin' AND passwd='E10ADC3949BA59ABBE56E057F20F883E' LIMIT 0, 1 "

看来服务器已经响应了,chrome的开发者工具看看服务器响应的内容

{message: "接收不到用户名或者密码null==null", ok: false}
message
:
"接收不到用户名或者密码null==null"
ok
:
false

服务器就是接收不到 用户名和 密码

... 这跟日志对不上号

接收不到用户名或者密码null==null
我前台填写了参数上传到了服务器,还是会提示 这个值为NULL

chrome看看浏览器发送的内容

Request URL:http://www.scpzlc.com/admin/login
Request Method:POST
Status Code:200 OK
Remote Address:43.254.217.32:80
Referrer Policy:no-referrer-when-downgrade
Response Headers
view source
Cache-Control:no-cache
Connection:keep-alive
Content-Type:application/json;charset=UTF-8
Date:Tue, 14 Nov 2017 08:59:05 GMT
Server:kangle/3.4.8
Transfer-Encoding:chunked
X-Powered-By:nutz/1.r.60 <nutzam.com>
Request Headers
view source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.9
Cache-Control:no-cache
Connection:keep-alive
Content-Length:30
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:JSESSIONID=37D60C1CC35604810C5020B5C4839D1F
Host:www.scpzlc.com
Origin:http://www.scpzlc.com
Pragma:no-cache
Referer:http://www.scpzlc.com/admin
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36
X-Requested-With:XMLHttpRequest
Form Data
view source
view URL encoded
username:admin
password:123456

我后台接收post参数 这样写是对的嘛。

那么神奇, req.getParamter("username") 看看出啥

也是NULL,我在本地都可以打印出来,我上传到服务器就获取不到参数了

看看是不是包导错了记得以前遇到导入包错误导致适配不到参数

import org.nutz.mvc.annotation.Param;
我使用的是这个包

把 Ioc ioc, HttpServletRequest req 这两个参数去掉 就接收前面两个参数 试试可不可以

还是不行,这个太神奇了。我在本地都可以使用,部署到服务器上面都用不了

后台怎么接收post 参数呢

一样是req.getParamter

服务器上什么版本的tomcat?

但是这个接口用get 请求就可以获取到参数

直接tomcat对外吗? 是不是apache/nginx转发的?

直接 tomcat 对外访问的

跟你本地版本一样吗?

虚拟主机??

把req的header打印一下看看输出啥

Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.9
Cache-Control:no-cache
Connection:keep-alive
Content-Length:30
Content-Type:application/json; charset=UTF-8
Cookie:JSESSIONID=3CD6132CFDAF2E253CE1EEDDDE1281B0
Host:www.scpzlc.com
Origin:http://www.scpzlc.com
Pragma:no-cache
Referer:http://www.scpzlc.com/admin
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36
X-Requested-With:XMLHttpRequest
Content-Type:application/json; charset=UTF-8

变了??

这个地方我刚刚在调试的时候才加上去的

加上去就不一样了,不能这样改的,除非你前端也发json,然后@AdaptorBy(type=JsonAdaptor.class)

Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.9
Cache-Control:no-cache
Connection:keep-alive
Content-Length:30
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:JSESSIONID=3CD6132CFDAF2E253CE1EEDDDE1281B0
Host:www.scpzlc.com
Origin:http://www.scpzlc.com
Pragma:no-cache
Referer:http://www.scpzlc.com/admin
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36
X-Requested-With:XMLHttpRequest

我改回去了

难道是这虚拟主机有什么防火墙???

不清楚,是 kangle的服务器。

应该是把其他的防火墙都关闭了的

这样,你在web.xml里面再配一个Filter, 放在NutFilter之前, 里面调用req.getParamter看看出啥

<filter>
		<filter-name>nutz</filter-name>
		<filter-class>org.nutz.mvc.NutFilter</filter-class>
		<init-param>
			<param-name>modules</param-name>
			<param-value>com.scpz.MainModule</param-value>
		</init-param>
		<init-param>
			<param-name>exclusions</param-name>
			<param-value>/rs/*,/druid/*</param-value>
		</init-param>
	</filter>

前面怎么配置

public class AbcFilter implements Filter {
	
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		System.out.println(">?>>>>>>>>>>"+request.getParameter("username"));
		System.out.println(">?>>>>>>>>>>"+request.getParameter("password"));
		chain.doFilter(request, response);
	}
}

<filter>
		<filter-name>abc</filter-name>
		<filter-class>org.yyy.AbcFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>abc</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
添加回复
请先登陆
回到顶部