使用scriptCharset即可解决问题,用contentType就不一定可以了。
$.ajax({
url: testUrl,
dataType: 'jsonp',
type: 'post',
scriptCharset: 'utf-8'
});
上面的解决方案是最完美的,另外也附上网上的解决方式吧,是用contentType来处理的
2、
jQuery(form).ajaxSubmit({
url: "ajax.aspx?a=memberlogin",
type: "post",
dataType: "json",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: showLoginResponse
});
3、在action中设置编码格式时注意 :
response.setContentType("text/html;charset=gbk");一定要写在writer= response.getWriter(); 之前,否则依然乱码
PrintWriter writer ;
try {
response.setContentType("text/html;charset=gbk");
writer= response.getWriter();
writer.write(sb.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out=response.getWriter(); //输出中文,这一句一定要放到response.setContentType("text/xml;charset=utf-8"), response.setHeader("Cache-Control", "no-cache")后面,否则中文返回到页面是乱码
非常感谢http://yjingzeming.iteye.com/blog/1536335大大的分享;
4、当不使用printwriter时可以使用json格式进行传参
推荐使用JSON,可以参考以下代码
action:
Map<String,Object> map = new HashMap<String,Object>();
map.put( "total",total);
map.put( "list", list);
json = JSONObject. fromObject(map);
try {
/*设置编码格式,返回结果
* ***/
response.setContentType( "text/html;charset=UTF-8");
response.getWriter().write( json.toString());
} catch (IOException e1) {
e1.printStackTrace();
}
Jsp页面中用ajax请求后台:
$.ajax(
url:
method:
success:function(data){
var list = data.list; //获取后台list
}
);