首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

jquery高手来帮上忙

2012-12-23 
jquery高手来帮下忙,在线等我用jquery提交表单到struts2的action因为出现过乱码问题,所以在serialize()表

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 编码
[其他解释]

引用:
引用:将decodeURIComponent封装一个自己的方法,将%转化掉。
详细点呢,这个方法里怎么弄的,我不知道,还有这个%在后台是必须要保存的

例如:

function myDecodeURI(str){
  return decodeURIComponent(str,true).replace("%(","_(");
}

然后服务器端:

public String urlDecode(String str){
  return str.replaceAll("_(","%(");
}

以上代码未经验证,仅用于说明。
[其他解释]
jquery有个form插件,可以实现你说的提交不编译。
[其他解释]
将decodeURIComponent封装一个自己的方法,将%转化掉。
[其他解释]
引用:
将decodeURIComponent封装一个自己的方法,将%转化掉。

详细点呢,这个方法里怎么弄的,我不知道,还有这个%在后台是必须要保存的
[其他解释]
引用:
乱码不是通过表单序列化来处理的。

你这原来就编码不一致,表单提交都会乱码。


引用:
不是应该用:encodeURIComponent这个方法来编码么,怎么用到decodeURIComponent了呢。。

上面两位,你们理解错了,我并不是用序列化来处理乱码,因为我没有使用decodeURIComponent方法,所以提交的时候可能会出现乱码,使用这个方法的意思是在提交是不进行编译,这是网上找到的,但用了之后确实没有出现乱码了,但会出现我上面所说的问题
[其他解释]
引用:
引用:
引用:将decodeURIComponent封装一个自己的方法,将%转化掉。
详细点呢,这个方法里怎么弄的,我不知道,还有这个%在后台是必须要保存的
例如:


JavaScript code??



1234

function myDecodeURI(str){   return decodeU……

我明白你的意思,但是不行,首先是,这个提交,我后台是用list直接接收的,他会自动生成个list对象,中途无法插手的
[其他解释]

引用:

应该是配一个拦截器,把所有请求都采用 utf-8 编码

我也感觉到,好像是服务器上的编码和我本地开发不太一样,但是没法,只能让程序去适应服务器
[其他解释]
引用:
$.ajax({
type:'POST',
        url: 'action名字',
data: {'loginName':loginName}, //参数 
dataType: 'text',
        error:....
        success:.....
})

这样传是不会出现中文乱码的,也不会出现% 报错

非常感谢,你提醒了我

热点排行