一次Ajax请求从PHP服务器端返回所有数据,后在客户端根据需要排序,服务器返回如下JSON数据,
{'all':[{'id':'1','name':'Bruce','vote':151,'bad':1,'title':'学习Javascript'}, 
        {'id':'2','name':'Lini','vote':11,'bad':141,'title':'学习Ajax'}, 
        {'id':'3','name':'Jack','vote':121,'bad':4,'title':'学习JQuery'}, 
        {'id':'4','name':'Cals','vote':151,'bad':41,'title':'学习PHP'}, 
        {'id':'5','name':'Lucy','vote':13,'bad':5,'title':'学习MySQL'}, 
        {'id':'6','name':'Paul','vote':166,'bad':11,'title':'学习CSS'}, 
        {'id':'7','name':'John','vote':15,'bad':188,'title':'学习HTML'}, 
        {'id':'8','name':'Ben','vote':19,'bad':335,'title':'学习C++'}, 
        {'id':'9','name':'Coa','vote':277,'bad':33,'title':'学习C'}]}因为要同时显示两个排序结果(默认显示id排序结果),所以服务器端只能输出按id排序后的结果,页面另一个地方显示按vote从大到小的排序结果,搜索也没有找到,自己整了半天无果,请高手帮忙

解决方案 »

  1.   

    不用js解决的办法:你不是有2个地方显示不同的排序么?
    1、第一个地方就是你目前的这种顺序:ID排序
    2、第二个地方就是用vote排序。
    解决方法如下:
      
       你可以返回一个大的json串,这么写
        {"sortById":[{},{}],
         "sortByVote:[{},{}]}明白了么?就是返回2个排序的结果,你在第一个地方用sortById的数据,第二个地方用sortByVote的数据。
    缺点:返回客户端的数据量翻了一倍
    优点:简单易行,不用前台js再次处理
      

  2.   

        /*参数定义:
            datas 要排序的数组,其中每个元素是一个JSON对象{}
            field 要排序的元素的字段名,将使用该字段进行排序
            type  排序类型,如果为"down"则为降序排序,否则升序
        */
        function SortData(datas, field, type) {
            SortFun.field = field;
            datas.sort(SortFun);
            if (type == "down") {
                datas.reverse();
            }
        }
        function SortFun(data1, data2) {
            if (data1[SortFun.field] > data2[SortFun.field]) {
                return 1;
            }
            else if (data1[SortFun.field] < data2[SortFun.field]) {
                return -1;
            }
            return 0;
        }
      

  3.   

    假设你用 data来接收你的数据的话,你可以这样用:
    SortData(data.all,"id","down"); //如果升序的话,去掉第三个参数即可
      

  4.   

    参见:http://topic.csdn.net/u/20091023/14/2fa6e779-0307-414f-8549-1686fbf041ca.html