[XMLHttpRequest] Affichage données dans désordre

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
Shinzeo
Messages : 2
Enregistré le : 05 mai 2020, 16:02

[XMLHttpRequest] Affichage données dans désordre

Message par Shinzeo » 05 mai 2020, 16:07

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 791 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.

Avatar du membre
webmaster
Administrateur du site
Messages : 234
Enregistré le : 28 févr. 2017, 15:19

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

Message par webmaster » 06 mai 2020, 11:07

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.
TJS : 20 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Shinzeo
Messages : 2
Enregistré le : 05 mai 2020, 16:02

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

Message par Shinzeo » 20 mai 2020, 00:09

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.

Avatar du membre
webmaster
Administrateur du site
Messages : 234
Enregistré le : 28 févr. 2017, 15:19

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

Message par webmaster » 25 mai 2020, 13:04

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...
TJS : 20 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Répondre