2012-10-01 2 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"}}} 

내가 가지고있는 JSON에서 데이터를 받아 HTML 태그에 그것을두고 JS 기능 :

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

Odd. 'Append()'는 항상 현재 요소를 지정된 요소의 끝에 추가해야합니다. json 요소가 정확한 순서로 되돌아오고 있습니까? 그것은 정렬 된 SQL 경우, 그들은 확신합니다 ... – Dutchie432

답변

0

사실 JSON 배열을 정렬 할 수 있습니다. 기본적으로 자바 스크립트 객체 일뿐입니다. 여기

은 예입니다 Sorting JSON by values

+0

JSON은 SQL 쿼리를 사용하여 정렬되지만 Chrome이 해당 정렬을 재정의하는 것처럼 보입니다. – pshoeg

+0

그래서, 내가해야 할 일은 getJSON 이후에 정렬하는 것일까 요? 그걸 어떻게하는 지 아는가? – pshoeg

0

아, 나는 그것을 알아 냈다. getJSON 다음에 JS sort() 메서드를 사용하여 데이터를 정렬합니다.

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);