通過Ajax技術,將陣列型別資料轉換為JSON格式的物件
阿新 • • 發佈:2019-01-27
一、在伺服器端將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陣列