通过新浪网站提供的一个图片接口拿到一个值,然后通过jquery传到服务器
js代码:
<br> function check1() {<br> var str=encodeURIComponent(hq_str_sh600872);<br> alert(str);<br> $.post("one/login.action", "stockinfo=" +str, callback);<br> }<br> function callback(){<br> }</p> <p>alert(hql_str_sh600872) 是中文的:中据高新,10.95,10.84,11.21,11.52,10.94,11.21,11.22,46111601,520188478,49039,11.21,203900,11.20,23000,11.19,33800,11.18,44700,11.17,66397,11.22,207215,11.23,151600,11.24,190861,11.25,75400,11.26,2010-01-15,15:02:07</p> <p>html代码:<br> <input type="button" value="提交" onclick="check1();">;</p> <p>java代码:<br> public String testLogin() {<br> HttpServletRequest request=ServletActionContext.getRequest();<br> String str=request.getParameter("stockinfo");<br> String info="";<br> try {<br> info= URLDecoder.decode(str,"GBK");<br> System.out.print(info);<br> } catch (UnsupportedEncodingException e) {<br> e.printStackTrace();<br> }</p> <p>请问大侠们,高手们,我该怎么办··在电脑前答复···!!!!!急死我了!!!</p>
你加我的QQ吧!我给你看看呀!438562168
$.post("one/login.action", {stockinfo:str}, callback);
}
ajax请求没有必要通过encodeURIComponent进行转换。
嗯。encodeURIComponent主要是对地址栏中的参数进行转化。
普通通过form和ajax提交都不需要转换
写一个过滤器呀!呵呵!package com.hnxz.oa.web.filter;
import java.io.IOException;
import java.util.Date;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.beanutils.ConvertUtils;
import com.hnxz.oa.web.converter.DateConverter;
public class EncodingFilter implements Filter {
protected FilterConfig filterConfig; // 获取参数的的变量
private String targetEncoding = "GB18030";
public void setFilterConfig(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
/**
* 初始化过滤器获取初始参数
*/
public void init(FilterConfig config) throws ServletException {
ConvertUtils.register(new DateConverter(),Date.class);
this.filterConfig = config;
targetEncoding = config.getInitParameter("encoding");
}
/**
* 进行过滤处理的方法
*/
public void doFilter(ServletRequest srequest, ServletResponse sresponse,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) srequest;
request.setCharacterEncoding(targetEncoding);
chain.doFilter(srequest, sresponse); // 把处理权发送到下一个
}
/**
* 销毁过滤器
*/
public void destroy() {
filterConfig = null;
}
}
web.xml是:
encodingFilter
过滤器的路径
encoding
GB18030
encodingFilter
/*
你用是Struts2还是struts1呢?
http://fishermen.iteye.com/blog/31896 这个你参考一下呀!
用这个就行了!呵呵
$.get("addLinkManGroupAjax.shtml?abc="+encodeURIComponent(中文值);这样就行了..我试过..希望能帮到你...
呵呵!出来了!你把js中的编码集也要改成和jsp页面一样的呀!
页面上使用encodeURI而不是encodeURIComponent
[code="javascript"]
...
var str=encodeURI(hq_str_sh600872);
...
[/code]
后台代码:
[code="java"]
...
info= URLDecoder.decode(str,"utf-8");
...
[/code]
如果不行,encodeURI调两次
[code="javascript"]
...
var str = encodeURI(encodeURI(hq_str_sh600872));
...
[/code]
[quote]$.get("addLinkManGroupAjax.shtml?abc="+encodeURIComponent(中文值);[/quote]
这种方式就是通过浏览器地址表示,所以后面的中文字符需要做encode处理。在服务器端也同样要进行decode处理。并有在客户端通常也不是只encode一次,而是两次。
[code="js"]$.get("addLinkManGroupAjax.shtml?abc="+encodeURI(encodeURI(中文值));[/code]
不过说过,这种方法并不一定好,既然使用了ajax,那么将数据放到data中,通常都不需要进行手动转化。
[code="java"]$.get("addLinkManGroupAjax.shtml",{abc:'中文值'});[/code]
不过,这些字符处理都并不针对页面流,所以通常还需要在servlet请求前设置request的编码,这个可以通过在web.xml中配置filter过滤来实现。三楼就列出了详细的设置。