Bonjour,

Je me permets de vous soumettre mon problème. Cela fait un moment que je tourne en rond sur le sujet.

Je synchronise des listes déroulantes sur une page php à l'aide de code javascript "AJAX". Voici la fonction qui me permet de le faire :
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
function makeRequest(url,id_niveau,id_ecrire,id_prod,num_option_sup,id_encours){
	var http_request = false;
		//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
        if (!http_request) {
            alert('Abandon :( Impossible de créer une instance XMLHTTP');
            return false;
        }
        http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
		// lancement de la requete
		http_request.open('POST', url, true);
		//changer le type MIME de la requête pour envoyer des données avec la méthode POST ,  !!!! cette ligne doit etre absolument apres http_request.open('POST'....
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		obj=document.getElementById(id_niveau);
		val_obj=obj.value.split('|');
		obj_encours=document.getElementById(id_encours);
		val_obj_encours=obj_encours.value.split('|');
		data="val_sel="+val_obj[0]+"&id_prod="+ id_prod + "&num_option_sup=" + num_option_sup + "&val_encours="+val_obj_encours[0];
		http_request.setRequestHeader("Content-length", data.length);
        http_request.send(data);
}
 
function traitementReponse(http_request,id_ecrire) {
	var affich="";
 
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
					// cas avec reponse de PHP en mode texte:
			//chargement des elements reçus dans la liste
			var affich_list=http_request.responseText;
			obj = document.getElementById(id_ecrire); 
            obj.innerHTML = affich_list;
		} 
		else {
                alert('Un problème est survenu avec la requête.');
        }
 
    }
}
Le site sur lequel je travaille est déjà en production et ses url sont réécrites. Aucun problème sur la réécriture des url, elle a été éprouvée.
Or pour la synchronisation des listes déroulantes, tout se passe bien tant que je fonctionne avec une page dont l'url n'est pas réécrite. Mais dès que je passe en mode url rewriting, le http_request.status revient en erreur 404 dans la fonction traitement Reponse.

Les url réécrites sont de ce type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
# Produit avec page et critères :
RewriteCond %{QUERY_STRING} ^page=([0-9]+)&tri_prix=([0-9]+)&tri_marque=([0-9]+)$ 
RewriteRule ^([0-9]+)-([-a-z]+)/([0-9]+)-([0-9]+)-([-a-z]+)\.php$ /details.php?CAT=$1&SCAT=$3&ID_PROD=$4&page=%1&tri_prix=%2&tri_marque=%3 [L]
Si vous avez une idée, je vous remercie d'avance.