Retour "undefined"

Il y a 2 mois (modifié Il y a 2 mois)
#


Bonjour
J'ai créé une requête ajax pour recuperer des donnée dans une BDD

Du coté PHP tout est ok

Mais du coté JS j'ai un retour "undefined" dans ma variable tableauRepertoire

Quand je mets une console.log(valeurs) dans request.done, les données sont OK

 

let tableauRepertoire = datasRepertoire(urlPage);

   console.log(tableauRepertoire);

   function datasRepertoire(page) {

       

       let request = $.ajax({
           url: page,
           dataType: 'json'
       });

       request.done(function (valeurs) {
           if (valeurs.length > 0) {
               return valeur;
           }
       });

       request.fail(function (jqHXR, textStatus) {
           alert('erreur dans la requete: ' + textStatus);
       });
   }


___________________________________

public function selectRepertoire()
   {
       $dossier = (new DocumentsModel)->selectDeplaRep();

       // On return le resulat
       echo json_encode($dossier);
       die;
   }

___________________________________

public function selectDeplaRep()
   {
       // On prepare la requette de l'id
       $sql = 'SELECT dossier.id, dossier.libelle, dossier.parent FROM dossier WHERE dossier.statut=:statut ORDER BY dossier.parent ASC, dossier.libelle ASC';
       // On crée un tableau pour la rquette
       $data = [
           ':statut' => 1
       ];

       // On envoie la requette a PDO
       $req = $this->getPDO()->prepare($sql);

       // On définit le mode de récupération par défaut pour cette requête 
       $req->setFetchMode(PDO::FETCH_CLASS, 'DocumentsModel');
       
       // On execute la requette sql
       $req->execute($data);
       $datas = $req->fetchAll();
       
       return $datas;
   }

Avez-vous une solution?

Cordialement.

Répondre
Avatar de nonodurengo

nonodurengo

Il y a 2 mois #

Bonsoir,

Ajax est asynchrone, le console.log est exécuté avant la réponse du serveur, c'est normal 

Soit tu mets ton traitement dans le .done, soit tu utilises await et async

Sinon, jQuery est dépassé depuis longtemps, il faut favoriser fetch 

Avatar de Benoit

Benoit

Il y a 2 mois #

Bonjour, je vous remercie pour ces infos, je vais aller voir fetch.
Je débute avec ajax et j’ai beaucoup de mal à le comprendre, je pensais qu’il fallait utilisé jQuery, et je ne connaissais pas fetch.
 

Avatar de nonodurengo

nonodurengo

Il y a 2 mois #

Merci pour cette vidéo, cela va m'aider

Avatar de nonodurengo

nonodurengo

Il y a 1 mois #

Après 7 jours sans activité, ce sujet a automatiquement été verrouillé

Avatar de NT Bot

NT Bot