日期:2014-05-16  浏览次数:20372 次

向MVCaction发送json对象并处理的过程
前段时间一直提问请教,现在该是我为国家做贡献的时候了。因此写这篇文章,介绍关于web客户端向MVC action发送json对象参数并处理的过程。

背景:一般我们都是向服务器发送表单,或者字符串参数,基本满足需求。我们也经常从服务器端返回json到web客户端,但是相反的方向很少触及,那就是从web客户端向服务器端提交json,在遇到到复杂需求时,就需要发送多个复杂的数据结构(数据结构序列)到后台了,这是json的用武之地。下面着重贴出关键代码:

前端页面代码:

function generateExcel()
{
var aArray=new Array();//new一个数组,以保存json对象

var li=$("#editCol li");
var jsonObj;
var colField="";
var colDesc="";

for(j=0;j<li.length;j++)
{
colField=$(li[j]).children("span.colField").text();
colDesc=$(li[j]).children("span.colDesc").text(); //构建json对象,并把它放到数组中
jsonObj={"id":colField,"name":colDesc}; aArray[j]=jsonObj;
}

//注意:一定要使用stringify函数对数组进行一番处理,就是json字符串化,这样才能发送到服务器端。
var inFoArrayJsonStr = JSON.stringify(aArray);

 
var url="Test!generateTemp.action";
$.ajax({
url:url,
type:"POST",
data:{'my':inFoArrayJsonStr} 
});
}



后台Action处理代码:

JSONArray array=JSONArray.fromObject(ServletActionContext.getRequest().getParameter("my"));

Iterator it =ja.iterator();
JSONObject jo;
String id;
String name;
while(it.hasNext()){
    jo =JSONObject.fromObject(it.next());
    id= jo.getString("id");
    name= jo.getString("name");
    System.out.println(id);
    System.out.println(name);
}