jquery高手来帮下忙,在线等
我用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就会出问题,大哥些,帮下忙,在线等了
[最优解释]
$.ajax({
type:'POST',
url: 'action名字',
data: {'loginName':loginName}, //参数
dataType: 'text',
error:....
success:.....
})
这样传是不会出现中文乱码的,也不会出现% 报错
[其他解释]
提交表单应该是encodeURIComponent编码吧。。。
[其他解释]
乱码不是通过表单序列化来处理的。
你这原来就编码不一致,表单提交都会乱码。
[其他解释]
不是应该用:encodeURIComponent这个方法来编码么,怎么用到decodeURIComponent了呢。。
[其他解释]
应该是配一个拦截器,把所有请求都采用 utf-8 编码
[其他解释]
function myDecodeURI(str){
return decodeURIComponent(str,true).replace("%(","_(");
}
public String urlDecode(String str){
return str.replaceAll("_(","%(");
}