Page 1 sur 1

[XMLHttpRequest] Affichage données dans désordre

Posté : 05 mai 2020, 16:07
par Shinzeo
Bonjour tout le monde,

J'utilise l'objet XMLHttpRequest pour récupérer des données via une API mais dans certains cas, ces données sont dans le mauvais ordre quand je les récupère, par exemple :

Code : Tout sélectionner

let mealRequest = new XMLHttpRequest(),
    mealUrl = "http://localhost/IMT/Projet/app/api/meal/" + getCookie('IMMUserId');

// Récupération des données
mealRequest.open("POST", mealUrl);
mealRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
mealRequest.onreadystatechange = function() {
  if (this.readyState === XMLHttpRequest.DONE) {
    let mealResponse = JSON.parse(mealRequest.response);

    // Création d'un tableau avec les données récupérées
    mealResponse.results.forEach(meal => {
      let foodRequest = new XMLHttpRequest(),
          foodUrl = "http://localhost/IMT/Projet/app/api/food/" + meal.food;

      foodRequest.open('GET', foodUrl);
      foodRequest.onload = function() {
        let foodResponse = JSON.parse(foodRequest.response);
        
        // Création du tableau avec les lignes dans le désordre
      }
      foodRequest.send(null);
    });
  }
}
mealRequest.send("firstRow=" + firstRow + "&rowsNumber=" + rowsNumber);
Ce code m'affiche un tableau comme suit :
Capture.png
Capture.png (62.94 Kio) Vu 3760 fois
Où les données devraient être triées par date décroissante.

Pourtant lorsque que je teste mes requêtes avec PostMan, tout se passe bien et je récupère correctement les données.

Si vous pouviez m'indiquer ce qui pourrait poser problème, merci d'avance.

Re: [XMLHttpRequest] Affichage données dans désordre

Posté : 06 mai 2020, 11:07
par webmaster
Bonjour,

Pour moi, c'est forcément l'API qui retourne un ordre aléatoire.
Cela se produit parfois en SQL si il n'y a pas de condition ORDER BY précise.

Le parsing json coté JS ne peut pas inverser l'objet.

Re: [XMLHttpRequest] Affichage données dans désordre

Posté : 20 mai 2020, 00:09
par Shinzeo
Bonjour,

J'ai bien précisé
ORDER BY `date`
dans ma requête et la réponse est bien la même que sur PostMan. C'est ensuite quand je fais une requête pour chaque élément de l'objet obtenu que les données sont gérées sans aucun ordre précis.

Re: [XMLHttpRequest] Affichage données dans désordre

Posté : 25 mai 2020, 13:04
par webmaster
Il semble en effet que l'ordre dans les propriétés d'un objet ne soit pas défini.

Il va falloir ajouter un numéro d'ordre en plus dans les données pour pouvoir refaire le tri après le parse...