一、將通過JSON數據放到頁面。
var refFaresJson = eval('(' + '<%=GenRefFaresJson()%>' + ')');//BO得到數據。
數據JSON格式:{“tkt”:"fare",“tkt”:"fare",“tkt”:"fare",“tkt”:"fare".....}
JS拿到數據後 refFaresJson該JSON對象顯示的數據順序給BO給的一樣。
//簡單舉例:
執行 for(var tkt in refFaresJson){
tkt+"..........."+refFaresJson[tkt]
}
出來數據的順序就不對了。在IE,FireFox順序與BO得到的數據順序一樣。但是Chrome 就不是了.
查閱得知:http://w3help.org/zh-cn/causes/SJ9011 // 查詢自:http://segmentfault.com/q/1010000000327993
其實知道for-in不行後,我又嘗試了用Object.Keys(refFaresJson),但是這樣取到的Key的順序還是跟for-in時候的一樣。所以個人估計:
遵循新版 ECMA-262 第五版規範的Chrome Opera 的 JavaScript 解析引擎,使用 例如for-in 語句遍歷對象屬性時遍歷書序都並非屬性構建順序
所以改成用JSON數組:
數據JSON格式變成::[{"ticket":"tkt","fare":"faredata"},{"ticket":"tkt","fare":"faredata"}{"ticket":"tkt","fare":"faredata"}...]
JS拿到數據後:
$(refFaresJson).each(function () {
this.ticket+"..........."+this.fare;
});
這樣就OK了。
還有一小問題就是:在組裝JSON數組過程中:
StringBuilder sb = new StringBuilder();
string s ="{\"{0}\":\"{1}\"}";
foreach (KeyValuePair<string, string> item in d)
{
sb.AppendFormat(s, item.Key, item.Valued);
}
報錯:string轉換成DataTime 出錯...
得找個時間好好看一看...