我们公司封装了自己的前台框架以及后台框架
但是ajax前后台的交互大同小异
这里侧重主要是JSON的使用方式
代码片段如下:
/*javascript*/
var json = new Array();
var spans = document.getElementsByName("appendixSpan");
for (var i = 0; i < spans.length; i++) {
var nameValue = spans[i].firstChild.getAttribute("name");
if(nameValue!=null && nameValue.substring(0,8)=="itemName"){
var rec = nameValue.substring(8);
json.push({recSn:rec,examOrderCode:document.getElementById("examOrderCode"+rec).value});
};
}
if (json != "" && json != null ) {
alert("stringify(json)转之前json+"+json) //[object Object]
json=JSON.stringify(json); //转成字符串
alert("stringify(json)转之后json+"+json) //[{"recSn":"886748711317b4644ecb4282328e7b46","examOrderCode":"1474"}]
var url = "do?module=outpord&action=ExamOrder&method=a&json="+json;
var map = ht.ajax.request({url:url});
if (map != "" && map != null) {
alert("parse(map)转之前map+"+map); //{"886748711317b4644ecb4282328e7b46":"胆管"}
/* map = eval("("+map+")"); *///相当于JSON.parse
map=JSON.parse(map)
alert("parse(map)转之后map+"+map); //[object Object]
for(var key in map){
document.getElementsByName("itemName"+key)[0].value=map[key];
}
}
}
/*java*/
public String a() throws Exception {
String json = getParameter("json");
System.out.println("json++"+json);//[{"recSn":"886748711317b4644ecb4282328e7b46","examOrderCode":"1474"}]
//将字符串形式的json转成json数组
JSONArray jsonArray = new JSONArray(json);
HashMap<String, String> examOrderXItemMap = new HashMap<String, String>();
for(int i=0;i<jsonArray.length(); i++){
//遍历json数组,获取其中的个体单位
JSONObject jsonJ = jsonArray.getJSONObject(i);
ServiceRequest request = new ServiceRequest("exam", "ExamOrderItem","searchExamOrderXItemByCode");
request.setParameter("examOrderCode", jsonJ.getString("examOrderCode"));
List<ExamOrderXItem> itemList = ServiceProxy.getDefault().execute(request).getResultAsList(ExamOrderXItem.class);
if (itemList.size()==1) {
examOrderXItemMap.put(jsonJ.getString("recSn"), itemList.get(0).getExamItemName());
}
}
if(examOrderXItemMap.size()==0) {
return null;
}else {
//转成json字符串传到前台
return JSONObject.valueToString(examOrderXItemMap);
}
}
等有空我再把代码简化一下