Salut,

Encore une fois un problème avec Dojo.

Mon problème: J'ai une fonction qui me permet de créer un nouveau noeud dans un Tree.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
function newFolder(itemParent) {
                treeModel.newItem({id: "1000" , nom: "Nouveau dossier", id_site: "1107"},itemParent);
                store.save();
            }
J'ai mis des paramètres en dur dans newItem pour les tests, mais ces paramètres doivent bien entendu être dynamiques.

Ainsi, l'id doit être le prochain id du champ autoincrémental de ma table.

J'ai donc créé une seconde fonction qui appelle un script PHP via un objet xhrGet.

Mon script retourne bien la valeur attendue.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
/* Récupère le prochain id de la table Entite via un fichier PHP appelé en AJAX */
            function getIdEntite() {
                var xhrArgs = {
                    url: "../ajax/getNextIdEntite.php",
                    handleAs: "text"                 
                  }
                var requete = dojo.xhrGet(xhrArgs);
                return requete;
            }
La valeur de retour de getIdEntite() est un objet.
Après avoir lu la doc, je me suis rendu compte que xhrGet retourne un objet Deferred.

Comment puis-je récupérer la valeur de ma table ?

J'ai essayé ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
/* Récupère le prochain id de la table Entite via un fichier PHP appelé en AJAX */
            function getIdEntite() {
                var xhrArgs = {
                    url: "../ajax/getNextIdEntite.php",
                    handleAs: "text",
                    load: function(data) {
                        return data;
                    }
                  }
                var requete = dojo.xhrGet(xhrArgs);
            }
sans succès.

Pourtant un alert(data) m'affiche bien la valeur de la base de données.

EDIT
-----

J'ai résolu mon problème, mais d'une manière que je n'aime pas trop.

En gros, j'ai ajouté une textbox sur la page.
Dans le xhrGet, je lance une fonction sur load, qui modifie la value de cette textbox, que je récupère ensuite dans la fonction newFolder.

Ca fonctionne, mais j'aurais préféré ne pas avoir besoin de générer un nouvel élément HTML pour cela et récupérer la valeur dans une variable.