Bonjour,
Après plusieurs recherches, je ne parviens pas à mettre à jour une variable globale javascript à la sortie de ma requête Ajax.
Voici l'explication de ce que je cherche à faire :
Sur un évènement (ici avant chaque upload d'un fichier), si c'est le premier fichier et qu'aucun album n'est choisi, je souhaite appeler la fonction "createAlbum()" qui va exécuter une requête Ajax pour créer l'album en BDD et me fournir l'ID de l'album crée dans la réponse AJAX
Dans le success, je récupère bien l'ID du nouvel album crée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 var _nSelectedAlbumID = -1; jQuery('#toUpload').on('filepreupload', function(event, data, previewId, index) { console.debug("filepreupload"); if (index == 0 && _nSelectedAlbumID == 0) { createAlbum(_sSelectedAlbumName, _sSelectedAlbumDescription); } console.debug("AlbumID = " + _nSelectedAlbumID); data.form.append('nAlbumID', _nSelectedAlbumID); }); function createAlbum(sAlbumName, sAlbumDescription) { console.debug("create album start"); jQuery.ajax( { type : "POST", url : "index.php", dataType: "json", async : false, data : { 'view' : 'photos', 'action' : 'createAlbum', 'albumName' : sAlbumName, 'albumDescription' : sAlbumDescription }, success : function(response) { if (response.success) { _nSelectedAlbumID = response.nAlbumID; console.debug("create album response : " + _nSelectedAlbumID); } } }); }
Par contre, quand je faisaprès l'appel de la fonction createAlbum(), ma variable _nSelectedAlbumID est toujours à -1 ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part console.debug("AlbumID = " + _nSelectedAlbumID);
NB : En mettant la propriété "async : false" dans ma requête AJAX, l'ordre des appels est bien respecté.
En effet, avec mes "console.debug", j'obtiens bien :
Je ne peux et je ne souhaite pas faire la suite de mes traitements dans le "success" de ma fonction createAlbum().filepreupload
create album start
create album response (avec l'ID du nouvel album)
AlbumID = (avec un ID à -1)
Quel est donc le moyen pour que je puisse :
- appeler ma fonction createAlbum()
- mettre à jour ma variable "_nSelectedAlbumID" dans le "success" de la fonction
- ensuite utiliser cette variable "_nSelectedAlbumID" dans des traitements appelés après la fonction
Merci d'avance de vos réponses,
Nicolas
Partager