2013-02-20 102 views
0

我試圖選擇性地使用下面的代碼標準的JSON文件返回結果:選擇性返回JSON對象導致

var filters = { manufacturer: "Samsung" }; 

// filters initialised, now getJSON with filters 
$.getJSON("phones.json", filters, function(result) 
{ 
    alert(result.phones.length); 
}); // end getJSON 

我想要做的就是返回對象只在「製造商」是三星。 JSON看起來是這樣的:

{ 
    "phones": [{ 
     "basic": { 
      "id" : "1", 
      "name": "Samsung Galaxy S III", 
      "manufacturer": "Samsung", 

等等...

它不工作,這不是過濾JSON的。誰能幫忙?

謝謝。

+0

我沒有看到除了在服務器端執行操作之外的其他方法。即如果您只想傳輸過濾的數據。如果您可以在整個過程中進行過濾,然後在客戶端進行過濾,那麼您可以完全使用JS。 – techfoobar 2013-02-20 15:15:01

回答

1

$.getJSON()不支持篩選,所以假設你phones.json是沒有服務器端處理靜態文件,你必須在客戶端過濾:

$.getJSON("phones.json", function(result) 
{ 
    var filtered = []; 
    $.each(result.phones, function(key, value){ 
     if(value.basic.manufacturer == 'Samsung'){ 
      filtered.push(value); 
     } 
    }); 

    console.log(filtered); 
}); 

以上存儲濾波後的電話在filtered

+0

//初始化濾波器,現在的getJSON帶過濾器 $ .getJSON( 「phones.json」,功能(結果) { 變種matchedPhones =新的Array(); $。每個(結果,函數(K,V) \t { \t \t爲(VAR I = 0; I codernaut 2013-02-21 06:27:52

+0

@codernaut看起來不錯。如果這解決了它,請考慮接受答案,請參閱:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – MrCode 2013-02-21 09:23:18