Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'accès url AJAX avec CodeIgniter

Sujet résolu
    16 novembre 2017 à 11:35:06

    Bonjour tout le monde,

    Avant que des personnes me disent "Il existe déjà des sites qui traitent ce problème il faut faire une recherche Google avant de poster ici !", oui je sais et j'ai passé déjà quelques temps à chercher une réponse sur Openclassrooms, Stackoverflow, developpez.net... enfin bref.

    J'explique rapidement le contexte : je suis entrains de faire une sorte de bibliothèque en ligne où des fichiers de cours sont disponibles au téléchargement. J'ai mis en place une partie à gauche de l'écran où j'affiche les différentes matières, quand on clic sur une matière il y a un menu déroulant avec les dossiers et sous dossiers, enfin jusque là tout va bien ! Sauf que quand l'utilisateur clic sur un dossier (ou sous-dossiers) j'aimerai que du code AJAX s'exécute afin d'aller chercher dans la BDD les fichiers contenus par ce dossier puis je retourne ces fichiers mis en page sur la page de base.

    $(document).ready ( function () {
        $(document).on ("click", ".folderClick", function () {
            var data = $(this).attr('alt');
            alert(data); // Pour le debug
            $.ajax({
                url: "http://localhost/nesaip/application/controllers/Bibliotheque/getFilesFolderAjax",
                data:  data,
                success: function(html){                      
                    $('#sectionFiles').html(html);
                }
            });
            alert("je suis ici");
        return false;
        });
    });

    RQ : l'identifiant ''sectionFiles'' est attribué à une div dans mon container. C'est une zone dédiée à l'affiche du contenu des dossiers, en théorie renvoyée par l'appel AJAX lors du clic sur un dossier.

    Je sais bien qu'avec Codeigniter nous avons la possibilité de mettre la base_url comme ceci :

    url: <?php echo base_url();?>"/Bibliotheque/getFilesFolderAjax",

    ou encore comme ceci : 

    var base_url = <?php echo base_url()?>;
    
    (...)
    
    url: base_url"/Bibliotheque/getFilesFolderAjax",

    Mais rien ne fonctionne chez moi.

    Le

    alert(data)

    m'affiche bien la bonne valeur de la variable que je veux transmettre, donc rien à dire à ce niveau. Ca veut aussi dire que mon script se lance bien.


    Le problème ne vient pas de la fonction getFilesFolderAjax non plus car je l'ai testé hors de l'appel AJAX et pas de problème à signaler. J'en conclu que l'appel AJAX n'arrive pas à atteindre ma fonction avec cet url (d'ailleurs j'ai bien intégré le helper url au cas où).

    $this->load->helper('url');

    Enfin voila je ne vois pas trop comment régler ce problème... Si quelqu'un peut m'aider s'il vous plait :)

    -
    Edité par J-D-A 16 novembre 2017 à 11:37:32

    • Partager sur Facebook
    • Partager sur Twitter

    Rien n'est infaisable, il suffit de se donner les moyens d'y arriver.

      16 novembre 2017 à 11:53:04

      Salut,

      Vérifie dans la console, onglet réseau, que l'url appelée par ton script et la bonne. Tu peux aussi vérifier la réponse du serveur. Y a peut-être besoin de rajouter dataType: 'html' dans les paramètres.

      Je suis un peu surpris que ta query-string se limite à une clé sans valeur, à moins que l'attribut alt soit déjà formaté comme une query string ? 

      -
      Edité par LCaba 16 novembre 2017 à 11:54:32

      • Partager sur Facebook
      • Partager sur Twitter
        16 novembre 2017 à 15:52:33

        Salut,

        Je viens de vérifier dans la console et il me dit "Failed to load resource: the server responded with a status of 404 (Not Found)", pourtant j'ai bien re-regarder mais le lien qui m'affiche dans la console (en erreur) correspond bien au chemin réel avec comme convention /Controlleur/Fonction pour la fin du chemin.

        J'ai l'impression qu'il ne comprend pas que le "getFilesFolderAjax" de mon chemin est bien une fonction du contrôleur "Bibliotheque" et non pas un fichier. J'ai l'impression qu'il essaye de trouver un fichier de nom "getFilesFolderAjax", je suis dans une impasse encore...

        • Partager sur Facebook
        • Partager sur Twitter

        Rien n'est infaisable, il suffit de se donner les moyens d'y arriver.

          16 novembre 2017 à 15:58:35

          getFilesFolderAjax est une fonction javascript ?

          si c'est le cas, faut pas la mettre entre guillemets, sinon c'est normal que ton script voit pas autre chose qu'une chaine de caractères, par exemple :

          url: base_url + "/Bibliotheque/" + getFilesFolderAjax(),



          -
          Edité par LCaba 16 novembre 2017 à 15:58:53

          • Partager sur Facebook
          • Partager sur Twitter
            16 novembre 2017 à 16:34:36

            Non c'est une fonction php qui est écrite dans le contrôleur "Bibliothèque".

            EDIT : J'ai essayé autre chose : 

            type: 'GET',
            url: "http://localhost/nesaip/application/controllers/Bibliotheque/getFilesFolderAjax()",

            et maintenant j'ai un autre message d'erreur : 

            Forbidden

            You don't have permission to access /nesaip/application/controllers/Bibliotheque/getFilesFolderAjax() on this server.

            -
            Edité par J-D-A 16 novembre 2017 à 16:54:19

            • Partager sur Facebook
            • Partager sur Twitter

            Rien n'est infaisable, il suffit de se donner les moyens d'y arriver.

              16 novembre 2017 à 23:43:41

              T'essaies d'appeler une fonction PHP en écrivant son nom dans l'URL ? oO
              • Partager sur Facebook
              • Partager sur Twitter
                17 novembre 2017 à 8:15:07

                Oui et je sais bien que c'est ça le problème mais en cherchant sur internet j'ai l'impression que c'est la syntaxe adaptée... Mais de toutes évidences c'est pas comme ça qu'il faut faire (...)
                • Partager sur Facebook
                • Partager sur Twitter

                Rien n'est infaisable, il suffit de se donner les moyens d'y arriver.

                  17 novembre 2017 à 8:23:16

                  Ajax fait des requetes HTTP comme tu les ferais en tapant l'url dans la barre d'adresse de ton navigateur. As-tu déjà vu le nom d'une fonction PHP dans une adresse de site web ? Ce serait hyper dangereux...

                  Pour obtenir une réponse en fonction des données que tu envoies, tu dois utiliser $_GET et $_POST

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 novembre 2017 à 8:52:26

                    Salut,

                    peut être que tu devais revoir comment fonctionnent les URL sur le framewok parce qu'on a l'impression que tu ne sais pas trop ce que tu fais, tu essaies des choses qui n'ont pas trop de sens ou c'est AJAX qui t'embrouille ? https://www.codeigniter.com/user_guide/general/routing.html?highlight=routing . l'URL ne doit pas comporter application/controllers et regarde du côté de https://www.codeigniter.com/user_guide/helpers/url_helper.html?highlight=site_url#site_url
                    • Partager sur Facebook
                    • Partager sur Twitter
                    le bienfait n'est jamais perdu
                      17 novembre 2017 à 9:31:03

                      WillyKouassi a écrit:

                      Salut,

                      peut être que tu devais revoir comment fonctionnent les URL sur le framewok parce qu'on a l'impression que tu ne sais pas trop ce que tu fais, tu essaies des choses qui n'ont pas trop de sens ou c'est AJAX qui t'embrouille ? https://www.codeigniter.com/user_guide/general/routing.html?highlight=routing . l'URL ne doit pas comporter application/controllers et regarde du côté de https://www.codeigniter.com/user_guide/helpers/url_helper.html?highlight=site_url#site_url


                      C'est AJAX qui m'embrouille, j'en ai jamais fais et j'en ai absolument besoin pour faire une partie de mon code. Le problème étant que je n'ai pas le temps de voir le cours dans son intégralité pour le moment, du coup effectivement j'ai quelques problèmes avec ce dernier...

                      LCaba a écrit:

                      Ajax fait des requetes HTTP comme tu les ferais en tapant l'url dans la barre d'adresse de ton navigateur. As-tu déjà vu le nom d'une fonction PHP dans une adresse de site web ? Ce serait hyper dangereux...

                      Pour obtenir une réponse en fonction des données que tu envoies, tu dois utiliser $_GET et $_POST


                      Me aculpa, c'est pas très intelligent.

                      J'ai réussi à régler le problème d'url puisque je n'ai plus le problème de Not found ressource.

                      Maintenant je n'ai pas le retour de la fonction php :lol:

                      EDIT : Il fallait l'écrire comme ci-dessous :

                      url: "Bibliotheque/getFilesFolderAjax",



                      -
                      Edité par J-D-A 17 novembre 2017 à 9:31:46

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Rien n'est infaisable, il suffit de se donner les moyens d'y arriver.

                        17 novembre 2017 à 13:41:43

                        On écrit plus généralement les URL en minuscules et utilises la fonction site_url , tu auras moins de soucis quand tu mettras ton site en ligne.. Peux-tu montrer le contenu de la méthode getFilesFolderAjax ? Regarde aussi l'onglet réseau pour voir la réponse de ton appel AJAX
                        • Partager sur Facebook
                        • Partager sur Twitter
                        le bienfait n'est jamais perdu
                          17 novembre 2017 à 14:34:09

                          WillyKouassi a écrit:

                          On écrit plus généralement les URL en minuscules et utilises la fonction site_url , tu auras moins de soucis quand tu mettras ton site en ligne.. Peux-tu montrer le contenu de la méthode getFilesFolderAjax ? Regarde aussi l'onglet réseau pour voir la réponse de ton appel AJAX


                          La fonction getFilesFolderAjax est vraiment pas courte je ne pense pas que ce soit constructif de la mettre ici. Cependant j'ai réussi à régler mon problème donc je vais mettre le sujet en résolu. 

                          Encore merci pour votre aide

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Rien n'est infaisable, il suffit de se donner les moyens d'y arriver.

                          Problème d'accès url AJAX avec CodeIgniter

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown