一、将通过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 出错...
得找个时间好好看一看...