牛骨文教育服务平台(让学习变的简单)
博文笔记

通过Ajax技术,将数组类型数据转换为JSON格式的对象

创建时间:2016-08-27 投稿人: 浏览次数:2291
一、在服务器端将list类型数据放入JSON对象中的方法 
tjyjList=PxcscjbDAO.getTjyjList(pxcscjbQOMap); 
//生成JSON对象,用来容纳获得的样卷数组 
JSONObject jsonObject=new JSONObject(); 
//生成JSON数组对象,存放样卷信息 
JSONArray bmhArray=new JSONArray();
   
   for(i=0;i<tjyjList.size();i++){
    //把样卷列表中的每条记录赋给Map对象
    tjyjMap = (HashMap)tjyjList.get(i);
    //通过Map对象获得样卷列表中的各个列值,并添加到JSON数组对象中
    JSONArray tempArray=new JSONArray();
    tempArray.add(tjyjMap.get("BMH").toString());
    tempArray.add(tjyjMap.get("DFDXX").toString());
    tempArray.add(tjyjMap.get("PYCJ").toString());
    bmhArray.add(tempArray);
   }
  try { 
   //将JSON数组对象put到JSONObject对象中,通过ajax传回给客户端的js dedecms.com 
   jsonObject.put("bmhlist",bmhArray); 
  } catch (Exception e) { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 
  } 
  PW.print(jsonObject);//通过PrintWrite,以流方式将JSONObject,返回给客户端。 
   PW.flush(); 
   PW.close(); 
   
二、在客户端中获得服务器通过ajax返回的JSON对象 
new Ajax.Request( "yjtx.do?method=getTjyjObject",//调用服务器上的相应方法,使用prototype框架中的Ajax对象 
   { 
method: "post", 
postBody: $("fzxx").serialize(),//序列化表单,即为发送表单做准备,该表单将被发送给服务器 
onFailure:function(transport){//执行失败时的执行函数 
  alert(transport.responseText); 
}, 
onSuccess: function(transport) {//如果操作成功,执行function函数 
  //将得到数据转换为json 
  var getobj=transport.responseText.evalJSON(true);//从responseText中获得JSON对象 
  //得到JSON对象中保密号列表 内容来自dedecms 
  var js_bmh = getobj.bmhlist; 

三、在客户端将需要传送到服务器端的二维数组或列表数据转化为JSON对象, 
再通过Ajax传送到服务器端 
1.首先将数据组成符合JSON键值对格式的数据 
{"名称":"值","名称":"值","名称":"值", 
"名称":[{"名称":"值","名称":"值","名称":"值"}]//(代表二维数组) 
} 
例如: 
var bmhlist = 
{ 
"maxnum":30, 
"errorcode":1, 
"bmha": 
[ 
{"bmh":"0151810151810000085","dfdxx":"1|2|","pycj":3}, 
{"bmh":"0151810151810000086","dfdxx":"3|4|","pycj":7}, 
{"bmh":"0151810151810000087","dfdxx":"3|4|","pycj":7},     
] 
} 
2.将JSON格式的数据转化为JSON对象,并赋给变量 
var bmhAsJSON=Object.toJSON(bmhlist); 
3.通过Ajax将JSON对象传送给服务器端 织梦好,好织梦 
var mailAjax = new Ajax.Request("yjtx.do?method=getJson", //url及需要调用的服务器端的方法   
         {     
             method: "get",     
             parameters: "bmhlist=" + bmhAsJSON,//将JSON对象作为参数(参数名为bmhlist)传给服务器端的getJson方法 
             onSuccess: function(transport) {//传送成功后执行的函数 
                //alert(transport.responseText); 
             } 
             }); 
               
四、在服务器端获得客户端传送的JSON对象 织梦好,好织梦 
public void getJson(ActionMapping mapping, ActionForm form, 
   HttpServletRequest request, HttpServletResponse response) { 
  String json=request.getParameter("bmhlist");//得到reguest中的JSON对象的字符流 
   JSONObject jsonObject = null;//定义一个JSONObject对象 
             try { 
              Object obj=JSONValue.parse(json);//将得到的JSON对象字符流转化为对象 

              jsonObject=(JSONObject)obj;//将对象强制转化为JSON对象 

              JSONArray array = (JSONArray) jsonObject.get("bmha");//得到JSON对象中键值为"bmha"的数组转化为JSONArray数组 
         
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。