Bonjour,
Pour mon code AJAX, j'ai besoin de faire deux appels différents AJAX en même temps. J'ai l'impression qu'avec la solution actuelle, j'ai des conflits entre les objets.
Voici mon code
Code javascript : 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
58
59
60
61
62 $(document).ready(function() { so_lets_go(); }); function so_lets_go() { ... current_path = 0; xhrRequest('file_list',current_path); xhrRequest('current_path',current_path); ... } function getXMLHttpRequest() { ... } function xhrRequest(request, id) { if (request == "current_path") { callback = checkCurrentPath; action = "getpath"; } else if (request == "file_list") { callback = checkFileList; action = "getfilelist"; } else { $('#infos').text('error: '+request+' unknown'); return 0; } var xhrObject; xhrObject = getXMLHttpRequest(); xhrObject.onreadystatechange = function() { if (xhrObject.readyState == 4) { if (xhrObject.status == 200 || xhrObject.status == 0) { $('#loader').hide(); //alert(action); callback(xhrObject.responseText); } else { $('#infos').html('Error : Status '+this.status+' returned.'); } } else if (xhrObject.readyState < 4) { //alert(action+' : '+xhrObject.readyState); $('#loader').show(); } }; xhrObject.open("GET", "proceed_files.php?action="+action+"&id="+id, true); xhrObject.send(null); } function checkCurrentPath(response) { ... } function checkFileList(response) { ... }
Seulement ceci ne me réalise que le deuxième appel (current_path) et si j'inverse l'ordre des appels, je n'obtiens que l'autre (file_list).
Si je décommente les deux alert dans la fonction xhrRequest, j'ai getfilelist : 1,2,3,4,1 puis getpath 1,2,3,4,1. Les deux sont alors bien exécutés et mon loader est toujours affiché.
Si je ne mets l'alert que dans le cas où le readyState vaut 4, j'ai deux fois getPath et il m'affiche les résultats de l'appel filelist à l'endroit où doit figurer celui de getpath
donc il fait bien les deux requêtes si on lui en laisse le temps mais mélange les retours.
Je suppose que c'est ma façon de faire les appels qui sont mauvais.
Comment gérez vous ça ?
merci
Partager