我在编写移动端网站,前台使用jqm,后台使用ssh框架。
现在的问题是:
后台向前台发送json数据,格式正常。
前台向后台发送json数据,出现?乱码。
前台代码:
$("#submit").on("tap", function() {
$.ajax({
cache: false,
type: "POST",
url: "http://localhost:8080/oa/addMeetingRoomOrderAJAX.action?callback=?",
data: $('#form1').serialize(),
dataType: "json",
success: function(data) {
alert(data.msg);
}
});
});
前台表单元素的命名都是用:order.roomId、order.roomName的格式。
后台代码:
@ParentPackage("json-default")
@Results({
@Result(name = "addMeetingRoomOrderAJAXOK", type = "json", params = {
"includeProperties", "msg", "callbackParameter", "callback" }) })
public class MeetingRoomOrderAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String msg;
private MeetingRoomOrder order;
@Resource
private MeetingRoomOrderBiz meetingRoomOrderBiz;
@Action(value = "addMeetingRoomOrderAJAX")
public String addMeetingRoomOrderAJAX() {
try {
meetingRoomOrderBiz.add(order);
msg = "保存成功!";
} catch (Exception e) {
e.printStackTrace();
msg = "保存失败!";
}
return "addMeetingRoomOrderAJAXOK";
}
数据已正常写入数据库,就是格式是乱码,问题出在哪里呢?
前台字符编码charset是utf-8吗?还有用的服务器字符编码设置了没
统一网页、服务器和框架的默认编码
在ajax里面用 params: { callback:? },传递值看看。直接用url、传确实有时候回出现乱码
1、在客户端用escape(encodeURIComponent(fieldValue))方法编码,例如:
复制代码 代码如下:
title=escape(encodeURIComponent(title)); //这是js里的函数
url="<%=request.getContextPath()%>/print/printList!printTable.action?title="+title;
2、在服务端用java.net.URLDecoder.decode(getRequest().getParameter("title"),"UTF-8"),进行解码。
后来找到原因了,是tomcat的编码设置问题,己解决,谢谢大家。