Bonjour à tous.
Bon alors je dois dire que mon problème est très très bizarre et je m'en remet à vos connaissances d'expert pour m'aider.
Le principe: j'ai une page sur laquelle les administrateurs du site peuvent gérer les items, les catégories, les utilisateurs et les magasin.
Pour chaque type, il y a un select qui a en événement onchange une fonction ajax qui permet de remplir le formulaire adjacent avec les données de l'élément sélectionné.
voici le code ajax qui est activé lors de l'événement onchange:
Sous firefox, tout ce passe comme prévu ça marche parfaitement.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 function makeRequest(idsearch, typesearch) { if (!http_request) { alert('Erreur AJAX. Mettre à jour votre navigateur.'); return false; } if (http_request.readyState==4 || http_request.readyState==0) { if (typesearch=='shop') { http_request.onreadystatechange = fillShop; http_request.open('GET', "searchshop.ags?id="+idsearch, true); } else if (typesearch=='user') { http_request.onreadystatechange = fillUser; http_request.open('GET', "searchuser.ags?id="+idsearch, true); } else if (typesearch=='category') { http_request.onreadystatechange = fillCategory; // http_request.onreadystatechange = function() {alert(http_request.readyState);} http_request.open('GET', "searchcategory.ags?id="+idsearch, true); } else if (typesearch=='item') { http_request.onreadystatechange = fillItem; http_request.open('GET', "searchitem.ags?id="+idsearch, true); } http_request.send(null); } } function fillShop() { if (http_request.readyState == 4) { if (http_request.status == 200) { document.getElementById("nameShop").value=http_request.responseText; } else { alert('There was a problem with the request.'); } } } function fillCategory() { if (http_request.readyState == 4) { if (http_request.status == 200) { document.getElementById("nameCategory").value=http_request.responseText; } else { alert('There was a problem with the request.'); } } else { // alert(http_request.readyState); } } function fillUser() { if (http_request.readyState == 4) { if (http_request.status == 200) { var parser=new DOMImplementation(); var xmlDoc=parser.loadXML(http_request.responseText); var shopNode = xmlDoc.getElementsByTagName('user').item(0).getChildNodes(); document.getElementById("nameUser").value=shopNode.item(0).getChildNodes(); document.getElementById("passUser").value=shopNode.item(1).getChildNodes(); document.getElementById("shopUser").value=shopNode.item(2).getChildNodes(); document.getElementById("adminUser").checked=(shopNode.item(3).getChildNodes()==1); } else { alert('There was a problem with the request.'); } } } function fillItem() { if (http_request.readyState == 4) { if (http_request.status == 200) { var parser=new DOMImplementation(); var xmlDoc=parser.loadXML(http_request.responseText); var itemNode = xmlDoc.getElementsByTagName('item').item(0).getChildNodes(); document.getElementById("barcodeItem").value=itemNode.item(0).getChildNodes(); document.getElementById("nameItem").value=itemNode.item(1).getChildNodes(); document.getElementById("categoryItem").value=itemNode.item(2).getChildNodes(); document.getElementById("priceItem").value=itemNode.item(3).getChildNodes(); } else { alert('There was a problem with the request.'); } } }
Sous explorer, ça ne marche que la première fois. après ça ne marche plus.
Alors j'ai fait des test en affichant des alert('ok'); sous différentes parties du code.
J'ai fait les constations suivante:
- A chaque changement de la liste, la méthode makerequest effectue bel et bien les opération demandée
- après le 1er appel, la fonction définie en "onreadystatechange" n'est plus rappelé
c'est très bizarre.
Quelqu'un a une idée???
Merci d'avance
Partager