2017-10-02 4 views
0

J'utilise un standard XMLHttpRequest pour récupérer des données JSON à partir d'une API. Au départ, j'affiche toutes les données (non filtrées). Lorsque vous cliquez sur un bouton, je veux trier par ce genre spécifique.XMLHttpRequest trier les données sans demande supplémentaire

Comment puis-je trier les données lors du clic de l'utilisateur sans demander à nouveau les données à chaque fois? Sauf erreur, vous ne pouvez pas stocker les données renvoyées dans une variable globale? Serait-il préférable de le trier dans les données locales?

app.js

// Get data from API 
makeRequest(url) 
.then(function (data) { 
    // Render ALL data from API 
    renderData(data); 
}) 

index.html

<button type="button" class="btn btn-secondary" onclick="sortByGenre('rock')">Rock</button> 

données JSON

[{ 
    "date": { 
    "dayOfWeek": "Thursday", 
    "month": "Oct" 
    }, 
    "location": "Bristol", 
    "genre": "rock" 
}, { 
    "date": { 
    "dayOfWeek": "Cardiff", 
    "dayOfMonth": 13, 
    "month": "Oct" 
    }, 
    "location": "Manchester", 
    "genre": "jazz" 
}] 

Merci

+1

Stockez-le dans une variable et lisez-le ... On dirait que vous le saviez déjà. – epascarello

+0

@epascarello - Pour une raison quelconque, j'avais l'impression que vous ne pouviez pas affecter les données renvoyées à une variable. – Liondedan

+1

Vous pensiez probablement que vous essayez de le lire avant que les données ont été récupérées. Dans votre cas, vous devez savoir que les données ont été récupérées afin qu'elles soient disponibles à lire. Vous pourriez utiliser des promesses si vous êtes inquiet. – epascarello

Répondre

0

Vous pouvez simplement stocker les données renvoyées dans une variable - cela ne nécessiterait pas de requête supplémentaire.