2012-10-01 38 views
1

我有一個函數從MySQL數據庫中提取數據並輸出JSON。下面是結果的一個例子:排序JSON輸出(Chrome問題)

{"success":"true","message":"Data loaded","data":{"11":{"id":"11","timestamp2":1349091206,"timestamp":" 1. oktober kl. 13:33","date_from":"25. oktober kl. 8:45","date_to":"25. oktober kl. 8:45","initials":"rt","trafikselskab":"Sydtrafik","alarm_comment":"sr6yer6y","transport_comment":"et6et7","vogn_comment":"uet7uet7","events_comment":"rt7ujrt7ury7u","system_comment":"urt7j","other_comment":"ry8kykytik"},"10":{"id":"10","timestamp2":1349091195,"timestamp":" 1. oktober kl. 13:33","date_from":" 1. oktober kl. 1:40","date_to":" 1. oktober kl. 1:40","initials":"rt","trafikselskab":"Sydtrafik","alarm_comment":"sr6yer6y","transport_comment":"et6et7","vogn_comment":"uet7uet7","events_comment":"rt7ujrt7ury7u","system_comment":"urt7j","other_comment":"ry8kykytik"},"9":{"id":"9","timestamp2":1349089753,"timestamp":" 1. oktober kl. 13:09","date_from":"25. oktober kl. 8:15","date_to":"25. oktober kl. 14:15","initials":"PSH","trafikselskab":"Midttrafik","alarm_comment":"ftyhdrtyh","transport_comment":"dtyjtr7j","vogn_comment":"rtyujkytik","events_comment":"yuilyiol","system_comment":"tuikul","other_comment":"yuolyu9lio"},"8":{"id":"8","timestamp2":1348230434,"timestamp":"21. september kl. 14:27","date_from":"27. september kl. 8:30","date_to":"21. september kl. 8:30","initials":"PSH","trafikselskab":"Movia","alarm_comment":"srtyh","transport_comment":"dyh","vogn_comment":"dtyjhdtyj","events_comment":"teyhtryj","system_comment":"dtyhteyj","other_comment":"trydjrtyuj"}}} 

我有一個JS函數從JSON獲取數據,然後把它放在HTML標籤:

function overlevering() { 
$.getJSON('/test/ajax2.php?type=test', function(data) { 
    if(data.data != '') { 
     $.each(data.data, function(fravaer, type) { 
       $('#overlevering').append('<article id="'+ type.timestamp2 +'"><h2>Modtaget '+ type.timestamp +'</h2><p class="from">Periode: '+ type.date_from +' - '+ type.date_to +'</p><p class="from">Fra '+ type.initials +', '+ type.trafikselskab +'</p><h3>Alarmer, der kræver særlig opmærksomhed</h3><p>'+type.alarm_comment+'</p><h3>Information vedr. teletaxer, flexture og handicapture</h3><p>'+type.transport_comment+'</p><h3>Information vedr. vogne, vognmænd og centraler</h3><p>'+type.vogn_comment+'</p><h3>Information vedr. systemer</h3><p>'+type.system_comment+'</p><h3>Information vedr. begivenheder, der kan påvirke driften</h3><p>'+type.events_comment+'</p><h3>Øvrige</h3><p>'+type.other_comment+'</p></article>'); 

     }); 
    } 
}); 
} 

當訪問Safari中的結果頁面中,結果按照它們在JSON中(按日期)排序。然而,在Chrome瀏覽器中,似乎他們沒有按照任何規則排序,只是拋在那裏。

我想這是不可能在JSON排序,所以我怎麼解決這個問題,並始終顯示最新的一個呢?

+0

您的代碼在哪裏用於排序?還是純粹依靠從服務器提供給您的默認訂單? – Nope

+0

是的,排序是在SQL查詢中完成的。 – pshoeg

+0

奇數。 'Append()'應該總是將當前對象添加到指定元素的末尾。 json元素是否按照正確的順序返回?如果它是SQL排序的,我確定它們是... – Dutchie432

回答

0

實際上可以對JSON數組進行排序。基本上它只是一個JavaScript對象,一旦你得到它。

下面是一個例子:Sorting JSON by values

+0

JSON使用SQL查詢進行排序,但似乎Chrome推翻了這種排序。 – pshoeg

+0

所以,我想我需要做的是在getJSON之後進行排序嗎?任何想法如何做到這一點? – pshoeg

0

啊,我想通了。我使用JS的sort()方法在getJSON之後排序數據:

var articles = $("#overlevering article"); 

     articles.sort(function(a,b) { 
     if (a.id < b.id) return 1; 
     else if (a.id > b.id) return -1; 
     else return 0 
    }) 

    $("#overlevering").empty().append(articles);