个人 问题、答案、总结

来源:互联网 发布:知周科技是否准备上市 编辑:程序博客网 时间:2024/04/28 04:04

一、将通过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 出错...

得找个时间好好看一看...


0 0
原创粉丝点击