2013-12-10 23 views
1

我有一個PHP文件,它爲某些類擦除了一個外部URL,然後將它們放入一個數組中。然後我使用json_encode()對數組進行編碼。該數組的順序必須迭代,但由於某種原因,JSON不會以正確的順序迭代。它按降序排列,而不是升序排列。jQuery。每個對象的排序

這裏是JSON的例子返回:

[{ 
    "id":1, 
    "info": 
     { 
      "title":"Design Prepaid cards with HD quality ", 
      "titleurl":"http:\/\/www.peopleperhour.com\/job\/design-prepaid-ards-with-hd-quality-380258", 
      "price":"\u00a3 400 ", 
      "urgent":"Urgent", 
      "jobID":"380258" 
     } 
}, 
{ 
    "id":2, 
    "info": 
     { 
      "title":"Charted accontant", 
      "titleurl":"http:\/\/www.peopleperhour.com\/job\/charted-accontant-380251", 
      "price":"\u00a3 60 ", 
      "urgent":"Urgent", 
      "jobID":"380251" 
     } 
}] 

這是我當前如何顯示JSON:

var jsonResults = JSON.parse(data); 

    var count = (jsonResults.length); 
    // Iterate Through Results 
    $.each(jsonResults, function(key, value) 
    { 

     // Display Data 
     $('#resultsPanel').fadeIn('slow'); 

     $('#resultsPanel').prepend(
      '<div class="item" id="'+ value.info.jobID +'">'+ 
      '<div class="title"><a href="'+ value.info.titleurl+'" target="_blank">'+ value.info.title +'</a></div>'+ 
      '<div class="price">'+ value.info.price +'</div>'+ 
      '</div>' 
     ); 
    }); 

是否有可能訂購JSON?

+0

您可以排序數組,如果你想有一定的順序包含的數組,但對象不能被排序,因爲在對象中不能保證順序。 – adeneo

+0

作爲一個旁註,只需用'for(var i = jsonResult; i - ;)替換每個循環'{將向後迭代數組 – adeneo

+0

我假設它與JSON對象中的數組的順序相同? –

回答

4

請參見本部分:

$('#resultsPanel').prepend(

「在最前面「的意思是」放在開始處「,它將會顛倒你的列表(把項目1放在開頭,然後把項目2放在開頭等等)。 )。我敢肯定你的意思是:

$('#resultsPanel').append(
+0

你先生,是個天才!就這麼簡單!但是,這確實帶來了更多問題。該腳本的全部內容是使用'setInterval'函數自動更新,該函數會在指定的間隔時間後觸發'.ajax'調用。但是,如果有新的工作崗位已經發布,他們將最終落在集裝箱的底部,而不是頂部。 – MikeF

+0

@MikeF如果你不想改變javascript,只保留'prepend',PaparazzoKid的反轉初始數據的建議可能會奏效。不過,我寧願將初始加載與更新分開。 – Izkata

1

對象是無序集合。您不能以跨瀏覽器兼容的方式在它們上指定訂單。除非已經按照規則排序,否則沒有原始順序的概念。

因此對服務器上的數據進行排序,然後按照相同的排序順序對它進行枚舉。

編輯

正如我在下面所提到的,我的jQuery的知識是最小的,但也許這樣的事情可以工作:

var jsonResults = JSON.parse(data); 
Object.keys(jsonResults).reverse().forEach(function (key, value) { 
    // do something here 
}); 
+0

JSON是一個列表 – Izkata

+0

@Izkata - JSON是字符串中使用的數據格式,重要的是數據結構一旦該字符串被解析爲javascript對象,它是一個數組還是一個對象,不存在「list 「,並且只有陣列可以被視爲有秩序。 – adeneo

+0

這正是我正在做的。 數據被抓取並放入一個具有唯一標識鍵/值對的數組中。然後使用'json_encode'函數編碼。 如果我轉到生成數據的PHP文件,它將以我需要的格式/順序輸出JSON。然而,當它到達客戶端時,它會以某種方式被反向排序。 – MikeF