11486 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde,

Je possède le corps d'une méthode Javascript (JQuery ajax) ci-dessous :


           var id = $(this).attr('id');
           $.ajax({
                type: "POST",
                data: {id:id},
                url: Shop.basePath +"getRtf",
                dataType: "json",
                success: function(response, status) {
                     // alert('ok');
                     $('#textFournisseur').html("<p style='font-size: 12px;''>"+response+"</p>");
                },
                error: function(response, status) {
                    toastr.error('Impossible d\'afficher le texte', 'Veuillez nous contacter');
                }
            });


Qui appelle la méthode Php ci-dessous


               public function getRtf(){
                $id = $_POST['id'];
	        if($this->request->is('ajax')){
                    $this->autoRender = false;
	        }
	         $txt = 'img/fournisseurs/rtf/'.$id.'.rtf.txt';
	         if(file_exists($txt)){
	             $contenu=file_get_contents($txt);
	         }
	         else{
	            $contenu="";
	         }
	         return json_encode(utf8_encode($contenu));
	    }


Le tout fonctionne correctement sous Chrome, et uniquement sous Chrome, et encore, le lendemain, ça ne re-fonctionne plus du tout. Je reçois un code 403 Forbidden. Ce qui est bizarre, c'est que toute les méthodes ajax sont construite EXACTEMENT de la même manière et fonctionne sans aucun problème. Il faut savoir que si je commente tout le code Php et que je retourne null (Pour voir si c'est le Php qui merdouille), j'ai toujours la même erreur. J'avoue ne rien comprendre.

Je travail sous Cakephp, la route est bien défini dans le fichier route.php. D'ailleure, si j'accède directement à l'URL dans le navigateur, mon fichier txt attendu est proprement retourné. Si quelqu'un pouvais me filer un coup de main... car là, je bloque.

Merci.
Modifié par Kikimagik (31 Oct 2014 - 10:56)
Bonjour,

ce serait plus facile à investiguer avec une version en ligne, car là on n'a aucune idée des valeurs des variables, le problème peut venir de n'importe ou.

Le fait que çà marche en accédant directement à l'URL donne quand même une piste : en accédant directement c'est une requete GET, et en AJAX c'est (dans ton cas) une requête POST.