后台传出的是{'':'请选择','1':'北京','2':'上海','3':'广州','4':'深圳'} 的一个json格式的数据
前台解析代码: 
 //获取后台数据解析 var pageInfo = eval("("+xmlHttp.responseText+")"); 
//遍历解析数据      
for(var o in pageInfo){
SelectNode.appendChild(createSelect(o,pageInfo[o]));
}发现遍历数据 变成‘北京’,‘上海’,‘广州’,‘深圳’,‘请选择’ 。其中‘请选择’变成最后一个,原本应该是第一位的。这是为什么呢?

解决方案 »

  1.   

    object可以视为一个map,有java基础的应当知道map的key是不按输入顺序的,实际测试firefox是按顺序的,chrome是不按顺序的,解决方法是改用array.
      

  2.   

    解析Json用
    Ext.decode(response.responseText)
    顺序就不会错了。
      

  3.   

    s = "{'':'请选择','1':'北京','2':'上海','3':'广州','4':'深圳'}";
    p = eval('('+s+')');
    for(i in p) {
      document.write(i + ':' + p[i] + '<br>');
    }
    显示:
    :请选择
    1:北京
    2:上海
    3:广州
    4:深圳显然不是 json 和 eval 的问题
      

  4.   


    在chrome下显示
    1:北京
    2:上海
    3:广州
    4:深圳
    :请选择
      

  5.   

    火狐,IE8是按顺序打印 ,IE9,IE10 不是
      

  6.   

      妹子 还要导EXT的js吗?
      

  7.   

    JSON结构尝试改下[
        {
            "seq": 0,
            "name": "请选择"
        },
        {
            "seq": 1,
            "name": "北京"
        },
        {
            "seq": 2,
            "name": "上海"
        },
        {
            "seq": 3,
            "name": "广州"
        },
        {
            "seq": 4,
            "name": "深圳"
        }
    ]