$("#submit").click(function() { var u = "#" $.ajax({ url : u, data : $("#form").serialize(), type : "put", success : function(data) { alert(data.msg); if (data.code == 1) { window.location.href = "#"; } } }); });本地jetty 上运行完全没问题。 tomcat上不行。 我个人觉得是tomcat的原因。但是在tomcat中执行。对应的方法是执行了。诡异的是获取不到参数。
tomcat打印的 JFinal action report -------- 2013-03-22 18:54:21 ------------------------------ Controller : com.xx.controller.RoleController.(RoleController.java:1) Method : update UrlPara : 1 Interceptor : com.xx.interceptor.ExceptionInterceptor.(ExceptionInterceptor.java:1) com.xx.interceptor.MyRestful.(MyRestful.java:1) com.jfinal.ext.interceptor.SessionInViewInterceptor.(SessionInViewInterceptor.java:1) com.xx.interceptor.LoginInterceptor.(LoginInterceptor.java:1) com.xx.interceptor.AuthInterceptor.(AuthInterceptor.java:1) --------------------------------------------------------------------------------
jetty打印的。
JFinal action report -------- 2013-03-22 11:11:30 ------------------------------ Controller : com.xx.controller.RoleController.(RoleController.java:1) Method : update UrlPara : 1 Interceptor : com.xx.interceptor.ExceptionInterceptor.(ExceptionInterceptor.java:1) com.xx.interceptor.MyRestful.(MyRestful.java:1) com.jfinal.ext.interceptor.SessionInViewInterceptor.(SessionInViewInterceptor.java:1) com.xx.interceptor.LoginInterceptor.(LoginInterceptor.java:1) com.xx.interceptor.AuthInterceptor.(AuthInterceptor.java:1) Parameter : ids[]={2,28,3,4,5,7,8,10,11,12,13,14,15,16,18,19,20,21,22,24,25,26,27} --------------------------------------------------------------------------------
JFinal Action Report 表明在 tomcat 环境下,JFinal 并没有接收到请求参数,证明确实没有收到请求,因为 JFinal 是很直接的从 HttpServletRequest中取参数并输出的。所以问题肯定出在请求本身,很可能请求被 Tomcat 改过变了,改变的原因最常见的是被重定向导致参数丢失。
Tomcat 有很多莫名其妙、自做主张的行为,OSC上 JFinal问答至少列出了三个自做主张的情况 ######websphere上也不行######事实证明使用jboss容器也不行。######tomcat确实挺奇怪的。jetty参获取到 put方法的表单参数,tomcat获取不到。######目测是这个原因: http://www.oschina.net/question/941098_93842 POST 方法在被 redirect 以后丢失了参数,所以得不到了,chrome 可以看请求,有一个 302 重定向 ######谢谢啊,不过不是这个原因。我看过请求了。只有一个put请求。 状态码是200。 而且显示的是参数已经传过去了。我调用的controllerkey是role WebRoot下也没这个目录。######
String queryString = ""; BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); String line; while ((line = reader.readLine()) != null) { queryString += line; }拿到了 queryString,它是一个“a=1&b=2”格式的字符串,然后可以轻松的转换成一个 Map,最后通过 map.get() 方法获取指定的参数。 ######看到你的回答才知道楼主以前提的是 PUT,一直以为是 GET 呢,汗颜
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。