Bonjour à tous,
Je fais actuellement une requête ajax vers mon serveur, retourne les valeurs au format JSON, et construit un tableau suivant les valeurs avec DOM...
A côté de ça mon problème a l'air ridicule mais je n'arrive pas à le résoudre !
Je vous montre d'abord mon code
mon problème donc et que j'aimerais faire un return de tableauValeurs pour pouvoir construire mon tableau hors de la fonction statechanged...
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 param_tests_jmeter.Ajax = { jspFolder : '/ParamTestJMeter-portlet/jsp', getTests : function() { var xhr = this.getXhr(); if (xhr === null) { alert("Your browser doesn't support XMLHttpRequest!"); return; } var url = this.jspFolder+'/dynamic_request/getJMeterTests.jsp'; // fonction appelée lors d'un changement d'état de la requête (de traitementMethods.jsp) xhr.onreadystatechange = function() { param_tests_jmeter.Ajax.stateChanged(xhr); }; xhr.open("GET",url,true); xhr.send(null); }, stateChanged : function(xhr) { // On vérifie que le requête s'est bien effectuée avant de continuer if (xhr.readyState === 4 && xhr.status === 200) { // évaluation du message JSON (eval()) var tableauValeurs = eval("(" + xhr.responseText + ")"); //Construction de mon tableau param_tests_jmeter.Table.createTable('div_edit_table_jmeter'); var imax = tableauValeurs.length; for (var i = 0; i < imax; i++) param_tests_jmeter.Table.addRow(tableauValeurs[i].name, tableauValeurs[i].environment, tableauValeurs[i].description, tableauValeurs[i].fileName, tableauValeurs[i].isActive); } }, // récupération de l'objet XmlHttpRequest (ajax) permettant d'échanger des informations getXhr : function() { var xhr; try { // Firefox, Opera 8.0+, Safari xhr = new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } } return xhr; } };
Le problème vous l'aurez deviné, c'est que si je fais ceci, ma construction du tableau s'exécute avant même d'avoir reçu les résultats.
J'ai tenté en synchrone avec le paramètre à false, mais c'est pas convaincant !
J'avais cru voir qu'on avait pas trop le choix et qu'on devait faire nos actions dans la fonction, mais je n'y crois pas ! Il y a forcément une solution !? Nan ?![]()
Partager