Page 1 sur 1
Problème rewriting avec Ajax
Posté : 24 sept. 2012, 11:37
par alexlamenace
Bonjour,
J'ai mis en place le rewriting sur un site, mais j'ai un petit problème sur une page qui fait appel à de l'ajax
appel de la page: $.getJSON("calendrier/ajax_calendrier.php",{numcateg: numcateg, ajax: 'true'}, function(j){ ...
dans le fichier .htaccess j'ai mis une règle :
RewriteRule ^ajax_calendrier/([0-9]+)$ ajax_calendrier.php?numcateg=$1 [NC]
Mais la console me renvoi l'erreur : GET calendrier/ajax_calendrier.php?numcateg=10&ajax=true
404 Not Found
Merci d'avance pour votre aide
Re: Problème rewriting avec Ajax
Posté : 24 sept. 2012, 14:56
par xTG
Cette règle n'impacte pas ta requête, le motif ne lui correspond pas.

Donc c'est véritablement que le fichier n'existe pas à cet endroit ou bien que tu as une autre règle qui est appliquée.
Re: Problème rewriting avec Ajax
Posté : 24 sept. 2012, 15:45
par alexlamenace
l'emplacement du ficher existe bien puisque sans le rewriting ma page s'actualise correctement.
voici la liste des règles existantes :
RewriteEngine On
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z_]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z_]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
Précision, j'utilise joomla et j'ai intégrer une page php à un article qui doit s'actualiser avec un script ajax.
(sans le rewriting tout marche correctement).
Re: Problème rewriting avec Ajax
Posté : 25 sept. 2012, 10:12
par alexlamenace
j'ai modifier l'url de la page par :
$.getJSON("calendrier/25",{numcateg: numcateg, ajax: 'true'}, function(j){
alert("JSON Data: " + j[0].element);
})
cette fois la console ne me renvoi plus d'erreur : GET calendrier/25?numcateg=9&ajax=true 200 OK 186ms
cependant rien s'affiche.
si j'exécute la requête dans mon navigateur elle me renvoie bien des données valide :
[{"numcateg":"9","numelement":"28","inter":"0","icone":"internet.png","categ":"Internet","element":"Internet","m1":"","m2":"","m3":"7","m4":"10 ou 18","m5":"","m6":"20","m7":"","m8":"","m9":"","m10":"24","m11":"","m12":"19"}]
où est mon erreur ? merci
Re: Problème rewriting avec Ajax
Posté : 25 sept. 2012, 13:26
par xTG
Le retour n'est pas valide non.
Tu retournes non pas du JSON mais un array contenant dans l'index 0 une chaîne JSON (cf les chevrons [] ).
Re: Problème rewriting avec Ajax
Posté : 25 sept. 2012, 14:53
par alexlamenace
merci, j'ai modifié, mais cela ne change rien (et je rappelle que tout fonctionne sans l'activation du rewriting)
{"numcateg":"9","numelement":"28","inter":"0","icone":"internet.png","categ":"Internet","element":"Internet","m1":"","m2":"","m3":"7","m4":"10 ou 18","m5":"","m6":"20","m7":"","m8":"","m9":"","m10":"24","m11":"","m12":"19"}
Re: Problème rewriting avec Ajax
Posté : 25 sept. 2012, 14:57
par xTG
Que donnes un alert(j) ?
As-tu regardé la console d'erreur ?
Re: Problème rewriting avec Ajax
Posté : 25 sept. 2012, 15:49
par alexlamenace
console : GET planning/25?numcateg=9&ajax=true 200 OK 186ms
mais rien n’apparaît même pas le message !
Re: Problème rewriting avec Ajax
Posté : 25 sept. 2012, 16:46
par xTG
Et en accédant à planning/25?numcateg=9&ajax=true tu as bien la chaîne que tu annonces plus haut ? O_o
Car la requête Ajax n'est rien d'autre qu'un onglet ouvert que tu ne vois pas, cela revient strictement au même.
Re: Problème rewriting avec Ajax
Posté : 25 sept. 2012, 17:03
par alexlamenace
oui il me renvoi bien la chaîne avec l'adresse planning/25?numcateg=9&ajax=true
il faut cependant qu'il me renvoi un tableau sinon cela ne marche même pas sans le rewriting :[{"numca .....":"19"}]
Re: Problème rewriting avec Ajax
Posté : 26 sept. 2012, 08:54
par xTG
Alors la requête Ajax doit te renvoyer exactement la même chose dans ce cas, vu qu'elle fait exactement la même chose comme je l'ai expliqué plus haut.
Un oeil dans une extension telle que Firebug pour visionner le retour de la requête Ajax devrait t'afficher la chaîne JSON.
Et un alert ou console.log de la variable j aussi.
Re: Problème rewriting avec Ajax
Posté : 26 sept. 2012, 09:28
par alexlamenace
La requête ajax dans ce cas là me renvoi en réponse les données sous forme d'une page html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml" xml:lang="fr-fr" lang="fr-fr" >
<head>
<base href="http://.../planning/25" />
...
<div class="art-article">
[{"numcateg":"9","numelement":"28","inter":"0","icone":"internet.png","categ":"Internet","element":"Internet","m1":"","m2":"","m3":"7","m4":"10 ou 18","m5":"","m6":"20","m7":"","m8":"","m9":"","m10":"24","m11":"","m12":"19"}]
</div>
...
Comment faire pour que la requête ne renvoie que le tableau de données ? faut-il modifier le .htaccess ?
Re: Problème rewriting avec Ajax
Posté : 26 sept. 2012, 10:37
par xTG
Quand tu accèdes à la page via l'url, regardes le code source retourné par le navigateur.
Tu devrais voir la même chose.
Autrement dit c'est ton script PHP qui te retourne cela.
Ton rewriting doit évincer des paramètres (je parie sur le ajax=true).
Re: Problème rewriting avec Ajax
Posté : 26 sept. 2012, 11:02
par alexlamenace
je ne sais pas comment l’écrire dans le htaccess, j'ai essayé une règle mais cela ne marche pas :
RewriteCond %{QUERY_STRING} ajax=true
RewriteRule (.+) planning/25?numcateg=$1 [L]
Re: Problème rewriting avec Ajax
Posté : 26 sept. 2012, 14:18
par alexlamenace
résolu :
en mettant le chemin en absolu çà marche !
merci xTG pour ton aide