jquery高手来帮下忙,在线等

meihao2007 2012-12-03 02:11:23
我用jquery提交表单到struts2的action
因为出现过乱码问题,所以在serialize()表单时,加了个decodeURIComponent方法
$('#medForm').submit(function(){
jQuery.ajax({
url: path+"/insertMzMed.action",
data: decodeURIComponent($('#medForm').serialize(),true),
type: "POST",
beforeSend: function()
{

},
error: function(request) {
alert("表单提交出错,请稍候再试");
},
success: function(data) {

}
});
return false;
});

现在出现的情况是,在jboss上的时候,如果表单中出现'%('这个符号时(如:姓名文本框中输入'张三%('),就会报错,而我试过了,如果去掉decodeURIComponent方法,就不会出问题,有没有两全其美的方法,即不出乱码,在提交时也不会出问题
java.lang.IllegalStateException: Parameters processing failed.
org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:407)
org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:229)
org.apache.catalina.connector.Request.parseParameters(Request.java:2874)
org.apache.catalina.connector.Request.getParameter(Request.java:1291)
org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:363)
javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:180)
org.jasig.cas.client.util.CommonUtils.safeGetParameter(CommonUtils.java:279)
org.jasig.cas.client.session.SingleSignOutHandler.isLogoutRequest(SingleSignOutHandler.java:101)
org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:57)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
com.appcenter.bcls.util.BCLSCustomFilter.doFilter(BCLSCustomFilter.java:28)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

还有个情况是,如果是用我本地的tomcat就不会出这个问题,一旦用jboss就会出问题,大哥些,帮下忙,在线等了
...全文
226 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
meihao2007 2012-12-03
  • 打赏
  • 举报
回复
引用 11 楼 p452088203 的回复:
$.ajax({ type:'POST', url: 'action名字', data: {'loginName':loginName}, //参数 dataType: 'text', error:.... success:..... }) 这样传是不会出现中文乱码的,也不会出现% 报错
非常感谢,你提醒了我
为啥呢 2012-12-03
  • 打赏
  • 举报
回复
jquery有个form插件,可以实现你说的提交不编译。
p452088203 2012-12-03
  • 打赏
  • 举报
回复
$.ajax({ type:'POST', url: 'action名字', data: {'loginName':loginName}, //参数 dataType: 'text', error:.... success:..... }) 这样传是不会出现中文乱码的,也不会出现% 报错
meihao2007 2012-12-03
  • 打赏
  • 举报
回复
引用 6 楼 hsp1990 的回复:
应该是配一个拦截器,把所有请求都采用 utf-8 编码
我也感觉到,好像是服务器上的编码和我本地开发不太一样,但是没法,只能让程序去适应服务器
meihao2007 2012-12-03
  • 打赏
  • 举报
回复
引用 7 楼 xodbc 的回复:
引用 2 楼 meihao2007 的回复: 引用 1 楼 xodbc 的回复:将decodeURIComponent封装一个自己的方法,将%转化掉。 详细点呢,这个方法里怎么弄的,我不知道,还有这个%在后台是必须要保存的 例如: JavaScript code?? 1234 function myDecodeURI(str){ return decodeU……
我明白你的意思,但是不行,首先是,这个提交,我后台是用list直接接收的,他会自动生成个list对象,中途无法插手的
meihao2007 2012-12-03
  • 打赏
  • 举报
回复
引用 4 楼 cl61917380 的回复:
乱码不是通过表单序列化来处理的。 你这原来就编码不一致,表单提交都会乱码。
引用 5 楼 AndyXuq 的回复:
不是应该用:encodeURIComponent这个方法来编码么,怎么用到decodeURIComponent了呢。。
上面两位,你们理解错了,我并不是用序列化来处理乱码,因为我没有使用decodeURIComponent方法,所以提交的时候可能会出现乱码,使用这个方法的意思是在提交是不进行编译,这是网上找到的,但用了之后确实没有出现乱码了,但会出现我上面所说的问题
为啥呢 2012-12-03
  • 打赏
  • 举报
回复
引用 2 楼 meihao2007 的回复:
引用 1 楼 xodbc 的回复:将decodeURIComponent封装一个自己的方法,将%转化掉。 详细点呢,这个方法里怎么弄的,我不知道,还有这个%在后台是必须要保存的
例如:

function myDecodeURI(str){
  return decodeURIComponent(str,true).replace("%(","_(");
}
然后服务器端:

public String urlDecode(String str){
  return str.replaceAll("_(","%(");
}
以上代码未经验证,仅用于说明。
思无邪1990 2012-12-03
  • 打赏
  • 举报
回复
应该是配一个拦截器,把所有请求都采用 utf-8 编码
AndyXuq 2012-12-03
  • 打赏
  • 举报
回复
不是应该用:encodeURIComponent这个方法来编码么,怎么用到decodeURIComponent了呢。。
coooliang 2012-12-03
  • 打赏
  • 举报
回复
乱码不是通过表单序列化来处理的。 你这原来就编码不一致,表单提交都会乱码。
frog8659 2012-12-03
  • 打赏
  • 举报
回复
提交表单应该是encodeURIComponent编码吧。。。
meihao2007 2012-12-03
  • 打赏
  • 举报
回复
引用 1 楼 xodbc 的回复:
将decodeURIComponent封装一个自己的方法,将%转化掉。
详细点呢,这个方法里怎么弄的,我不知道,还有这个%在后台是必须要保存的
为啥呢 2012-12-03
  • 打赏
  • 举报
回复
将decodeURIComponent封装一个自己的方法,将%转化掉。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧