2017-03-29 11 views
0

考慮下面的示例數據有條件地顯示結果,我需要按類型的結果:的關鍵

{ 
    "count": 50, 
    "data": [{ 
     "id": "title", 
     "image": "https://url-to-image.jpg", 
     "permalink": "/folder/bob/", 
     "text": "lots of text", 
     "title": "Bob", 
     "type": "User" 
    }, { 
     "id": "title2", 
     "image": "https://url-to-image2.jpg", 
     "permalink": "/folder/joe/", 
     "text": "lots of text here", 
     "title": "Joe", 
     "type": "Article" 
    }, { 
     "id": "title3", 
     "image": "https://url-to-image3.jpg", 
     "permalink": "/attorneys/jim/", 
     "text": "lots of text here", 
     "title": "Jim", 
     "type": "Blog" 
    }] 
} 

我試圖運行情況,如果類型中的某一個,顯示這些文章:

$("#searchterm").keyup(function(e) { 
    var q = $("#searchterm").val(); 
    //Only begin search with at least 3 characters. 
    if(q.length > 3){ 
     ajax_search(); 
    } 
    //Send search query 
    function ajax_search(){ 
    $.getJSON("http://url-to-search?q=" + q, { 
      dataType:'jsonp' 
    }, 
    //Get results and make 'em look good 
    function(data) { 
     console.log(data); 
     $(".results").empty(); 
     // $(".results").append("Results for <b> " + q + "</b>"); 
     $.each(data.data, function(i, data) { 
        if(data.type === 'Article'){ 
      $(".articles").append("<li><a href=localhost:4000" + data.permalink + ">" + data.title + "</a></li>"); 
        } else if(data.type === 'Blog'){ 
         $(".blog").append("<li><a href=localhost:4000" + data.permalink + ">" + data.title + "</a></li>"); 
        } 
     }); 
     }); 
    } 
}); 

但是,結果出現空,雖然有結果沒有條件陳述。

最後,結果應該是這樣的:

文章

博客

吉姆

+0

可能不是問題,但在嵌套函數中使用相同名稱的參數通常是一個壞主意(在您的情況下爲'data')。此外,您正在事件處理程序中定義一個函數;這將導致該函數在每個鍵盤上被重新定義,這可能不是你想要的。 –

+0

我想問問題的更直接的方法是,我怎樣才能修復我的'if/else'條件來檢查數據數組中每個對象的'type'並顯示基於該類型的結果。 – Matt

+0

您可以使用'$ .grep'方法來過濾這些結果。 –

回答

0

原來,這個問題是我已經設置爲能夠通過結果中滾動被設置爲錯誤類的溢出。

0

我想你想是這樣的:

var result = { 
 
    "count": 50, 
 
    "data": [{ 
 
     "id": "title", 
 
     "image": "https://url-to-image.jpg", 
 
     "permalink": "/folder/bob/", 
 
     "text": "lots of text", 
 
     "title": "Bob", 
 
     "type": "User" 
 
    }, { 
 
     "id": "title2", 
 
     "image": "https://url-to-image2.jpg", 
 
     "permalink": "/folder/joe/", 
 
     "text": "lots of text here", 
 
     "title": "Joe", 
 
     "type": "Article" 
 
    }, { 
 
     "id": "title3", 
 
     "image": "https://url-to-image3.jpg", 
 
     "permalink": "/attorneys/jim/", 
 
     "text": "lots of text here", 
 
     "title": "Jim", 
 
     "type": "Blog" 
 
    }] 
 
}; 
 

 
var filteredView = function(data,type,divclass){ 
 
    var filteredResults = $.grep(data, function(d){ return d.type == type; }); 
 
    var container = $("<div class='"+divclass+"'></div>").appendTo("#results"); 
 
    for(i in filteredResults){ 
 
    container.append("<div><h3>" + filteredResults[i].title + "</h3><p>" + filteredResults[i].text + "</p></div>"); 
 
    } 
 
}; 
 

 
filteredView(result["data"],"Article","article"); 
 
filteredView(result["data"],"Blog","blog"); 
 
filteredView(result["data"],"User","user");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="results"></div>

+0

這很接近,但我正在尋找一種方法來循環使用我的原始腳本並基於'data.type',將結果追加到基於現有類的每種類型。因此,如果(data.type ==「Article」)',只有類型爲article的結果將被追加到'

'div。 – Matt

+0

這將做你想要的一個單一的修改。我會告訴你如何。 –

+0

更新了代碼。 –