版本V5
實作基準:真正完成ajax加載模闆,根據名單清單生成相應資料文本框。
做到這步,發覺資料表需要修改了:
<a href="http://jooben.blog.51cto.com/attachment/201005/19/253727_1274230862lsJH.png"></a>
隻保留一張表,增加scoreInfo字段,存json格式的比分資料,其他兩張表廢棄。
上一個版本中,定義了:
var json={"t_1_name":"美國男子籃球隊","t_2_name":"立陶宛男子籃球隊"};
這裡就是名單,資料表中的scoreInfo為空,則從“名單清單”中擷取參加該比賽的名單,然後封裝成json格式的資料:
伺服器上的做法:
//list存放了名單List<Athlete>
Map<String,String> jsonMap
= new LinkedHashMap<String,String>(list.size());
for(int i=0,j=list.size();i&lt;j;i++){
int id = i+1;
jsonMap.put("t_"+id+"_name", list.get(i).getTeamName());
}
JSONObject json = JSONObject.fromObject(jsonMap);
request.setAttribute("json",json);
如果資料表中scoreInfo不為空,則擷取到:
json
= {"t_1_section_2":"5","t_1_section_1":"30","t_2_totalScore":"80","t_2_section_4":"5","t_2_section_2":"10","t_2_section_3":"5","t_1_totalScore":"65","t_1_section_4":"5","t_1_section_3":"5","t_1_name":
"美國男子籃球隊","t_2_section_1":"40","t_2_overtime_1":"10","t_1_overtime_2":"10","t_2_name":"立陶宛男子籃球隊","t_2_overtime_2":"10","t_1_overtime_1":"10"};
是以是否存在這個資料,關鍵修改之後有沒有送出。
ok,該有的,都有了,着手代碼實作:
/**
* 根據模闆id擷取模闆内容
* 然後重新拼裝table
* date :2010-4-15
*/
function getModelCode(modelId){
if(rsc!="" && modelId!=""){
jQuery.post("/admin/match_getModelCode.action", {Action:"get","rsc":rsc,"modelId":modelId},
function (data, textStatus){
//data就是傳回的模闆内容
//開始注入
//需要重新拼裝table 這裡省略代碼.....
//結束注入
});
}else{
alert("資料不完整");
}
背景模闆效果圖:
<a href="http://jooben.blog.51cto.com/attachment/201005/19/253727_1274230863XgHE.png"></a>
測試之後還是有小問題,就是在重新拼裝table的時候,因為設定了全局的:
var table_basic_html = "";
var table_head_html = "";
需要清空先,不然就會一直追加内容,産生多個table,如圖所示:
<a href="http://jooben.blog.51cto.com/attachment/201005/19/253727_127423086422TR.png"></a>
這些都是細節調整問題了,不能一步到位處理好,調試還是需要點時間,用心調試的。
ok,到此,版本V5算是比較成功了。
本文轉自jooben 51CTO部落格,原文連結:http://blog.51cto.com/jooben/317694