2017-06-02 39 views
0

我使用的是「GET」請求檢索這個API我在哪裏可以把.filter方法在我的AJAX請求的jQuery

「獲取」的要求是好的信息,但某些對象不具備圖像縮略圖把我的來源,我想將它們過濾掉,但似乎不知道在哪裏把這個方法,這裏是我的代碼

$(document).ready(function(){ 
    $('button').on('click', function(event){ 
    event.preventDefault(); 
    $('#result').empty(); 
    var userInput = $('input').val() 
     $.ajax({ 
     method:"GET", 
     url:"https://www.reddit.com/r/" + userInput + ".json?jsonp", 
     success:success 
     }) 
    }) 
    function success(response){ 
    var result =""; 
    var zero = "0" 
    $.each(response, function(index, value){ 
     var list = response.data.children 
     $.each(list.slice(1).slice(0, 12), function(index,value){ 
      var thumbnail = value.data.thumbnail 
      result += "<li>" + "<img src='" + thumbnail + "'/>" 
      $('#result').html(result) 
     }) 
    }) 
    } 
}) 

此外,如果你有任何想法如何構建我的代碼,所以我只需要做一個$ .each循環,這也會有所幫助!

感謝噸,

詹姆斯

+1

使用'條件jquery.filter''返回縮略圖!== 「」 &&縮略圖!== null'在'success' –

+0

請在下面的鏈接,我認爲這將解決您的問題。 https://stackoverflow.com/questions/4245231/how-do-i-filter-the-returned-data-from-jquery-ajax – Pramod

回答

0

使用filter

var list = response.data.children.filter(function(item) { 
    return item.data.thumbnail; 
}); 

$.each(list, function(index,value){ 
    var thumbnail = value.data.thumbnail; 
    $('#result').html(result) 
}) 
+0

它似乎不會導致任何erorrs,一些縮略圖具有「自我」的價值'這不是一個URL,所以我不能使用它。我試圖嘗試一個if語句,但不要去哪裏。 if(value.data.thumbnail == self){ **跳轉到下一個** } –

+0

您可以將其添加到過濾條件中。 'return item.data.thumbnail && item.data.thumbnail!=='self';' – Bnrdo

0

Promises將幫助你過濾掉列表(null或undefined,等等)與falsy縮略圖的項目有更結構化的代碼, Array.prototype.reduce將幫助您避免不必要的迭代。

function loadRedditData(keyword) { 
 
    return jQuery 
 
    .get(`https:\/\/www.reddit.com\/r\/${keyword}.json`, {jsonp: ''}) 
 
    .then(res => res.data.children.slice(1, 12)) 
 
    .then(data => (
 
     data.reduce((html, item) => { 
 
     let card = `<h5>${item.data.name}</h5>`; 
 
     
 
     if(item.data.thumbnail) { 
 
      card = `<img src="${item.data.thumbnail}" />`; 
 
     } 
 
     
 
     return html.concat(`<div class="card">${card}</div>`); 
 
     }, '') 
 
    )) 
 
    .then(html => jQuery('#result').html(html)) 
 
    ; 
 
} 
 

 
$(document).ready(function() { 
 
    $('button').click(function() { 
 
    return loadRedditData(jQuery('input').val() || 'Ecmascript 6'); 
 
    }); 
 

 
})
#result { 
 
    border: 1px solid cyan; 
 
    margin: 5px; 
 
    padding: 5px; 
 
    min-height: 300px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button>Load Your Data</button> 
 
<input value="javascript" /> 
 
<hr /> 
 
<section id="result"></section>

相關問題