season2009

通过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")    
        }    

 

分类:

技术点:

相关文章: