ExtJs使用Array向后臺(tái)發(fā)送大量數(shù)據(jù)
我們?cè)谑褂肊xtjs開發(fā)系統(tǒng)時(shí),Extjs通過json從后臺(tái)獲取數(shù)據(jù),同時(shí)保存數(shù)據(jù)時(shí)通過Post方式向服務(wù)器發(fā)送數(shù)據(jù):
- Ext.Ajax.request({
- url : "/application/controller/field/AddHeaderGroup.action",
- method : 'POST',
- params : {
- displayName:nodeText,
- queryId : queryId
- },
- success : function(response, opts) {
- newNode.set("id",response.responseText.replace(/'/g,""));
- //console.log(newNode.get('id'));
- parentNode.appendChild(newNode);
- }
- });
有時(shí)要在編輯一個(gè)完整的grid之后點(diǎn)擊“保存”時(shí)一次性保存整個(gè)grid的內(nèi)容,Extjs可以通過store的getModifiedRecords和getRemovedRecords方法得到變化的和刪除內(nèi)容。這一般都會(huì)使用javascript的數(shù)組實(shí)現(xiàn):先把一行數(shù)據(jù)push到數(shù)組中,再把一行數(shù)據(jù)的數(shù)組push到另一個(gè)數(shù)組中,發(fā)送到服務(wù)器。服務(wù)器端通過字符串解析還原數(shù)據(jù)內(nèi)容。
這個(gè)過程中存在一個(gè)不足:數(shù)組中的字符串?dāng)?shù)據(jù)中如果有",",服務(wù)器端在解析數(shù)據(jù)時(shí)常得不到正確的結(jié)果---服務(wù)器端只能通過字符串的split(",")函數(shù)來分拆字符串。
那要怎么才能解決這個(gè)問題呢?
Extjs提供了數(shù)組編碼:Ext.encode(Array)來解決這個(gè)問題。在把數(shù)組push到另一個(gè)數(shù)組中時(shí),使用arr1.push(Ext.encode(arr2)),把編碼后的數(shù)據(jù)push到另一個(gè)數(shù)組中(可以多層嵌套數(shù)組)。然后在服務(wù)器端解析每個(gè)使用Ext.encode()編碼的數(shù)組時(shí),都要使用:JSONArray.fromObject(groupList)把字符串還原成一個(gè)JSONArray。當(dāng)然,每一個(gè)JSONArray.fromObject要對(duì)應(yīng)一個(gè)Ext.encode()。這樣就可以相對(duì)完美的解決Extjs批量保存數(shù)據(jù)時(shí)字符串中存在“,”造成的問題。
posted on 2012-10-15 08:34 你爸是李剛 閱讀(1137) 評(píng)論(0) 編輯 收藏