個人 問題、答案、總結

一、將通過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 出錯...

得找個時間好好看一看...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章