通过ajax给后台传json对象,当json中含对象集合时,如
$.ajax({
url : ,
type : "POST",
dataType : "json",
data: {
\'year; : ;2006\',
\'list\' : [
{\'day\': \'01\', \'type\' : \'A\'},
{\'day\': \'02\', \'type\' : \'A\'},
]
},
});
此种方式在服务器端接收不到data
解决办法,把list中json转成字符串,服务器端再解析成json.
前端关键代码
var detail = "";
if ($(".list").length == 0)
{
return false;
}
$(".list").each(function() {
var day = $(this).find("input").attr("name");
var order = $(this).find("input:checked").val();
if (order == undefined){
order = \'--\';
}
detail += \'{ "day" : "\' + day + \'", "order" : "\' + order + \'"},\';
});
var jsonstr = "({orders:[" + detail + "]})";
$.ajax({
url : "",
type : "POST",
dataType : "json",
data: { params: JSON.stringify(eval(jsonstr))},
后端
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
String params = this.getRequest().getParameter("params");
JSONObject json = JSONObject.fromObject(params);
JSONArray orders = json.getJSONArray("orders");
int length = orders.size();
for(int i = 0; i < length; i++){
JSONObject item = orders.getJSONObject(i);
item.getString("day")
}