Bonjour à tous,

Aujourd'hui je rencontre un problème. Etant en train de développer un système d'inscription il me fallait intervenir en Ajax.

Mais je ne suis pas dans un cas normal, dans le cas normal j'aurais très facilement récupéré la réponse après l'appel. Mais je viens de me lancer dans les frameworks, actuellement je suis sous CakePHP qui n'est pas beaucoup utilisé contrairement à certains. Alors, sachant qu'un frameworks permet de générer en quelques sortes, la template de notre site. Je me retrouve avec une page prête à être affichée.

Voulant récupérer une simple ligne, je ne peux plus vraiment.. Je suis donc coincé, j'ai créé uné div spéciale pour pouvoir situé le texte que je souhaite récupérer.

Merci de m'aider..

Voici le code javascript qui se trouve sur la page d'inscription :

$("#continuerinscription").click(function()
                {

                     $.post('ValideInscription.php', 
                    {

                        'Step' : 'regles'

                    }, function(data)
                    {

                        document.location.href = $("#resultat").parents(data).html();

                    });

                });

Ne faites pas attention à cette ligne, c'est que j'ai essayé plusieurs petites trouvailles sur internet :

document.location.href = $("#resultat").parents(data).html();

Puis, voici la page où les premières vérifications se font :

<?php require 'config.php'; ?>
<?php 
    $this->layout = 'empty';
    if($_POST'Step'] == 'regles')
    {

        $_SESSION'inscription_step'] = 'personnage';

    }

?>
<div id='resultat'>
    <?php echo '/web/inscription/'.$_SESSION'inscription_step']; ?>
</div>

Merci d'avance :)

1 réponse


Avec Cake, les appels en ajax ne se font pas par des urls de fichiers mais par des routes.

Dans le js, tu fait un appel en ajax, mais dans le paramètre url, tu met le nom de ta route :

$.ajax({
  url: "ma/route/que/je/veux",
  ...
  ...

Après, tu "catch" la route dans ton router et tu envoie l'action au controller que tu veux :

Router::connect(
    'ma/route/que/je/veux',
    array('controller' => 'monController', 'action' => 'maMethode')
);

Après dans la méthode de ton controller, tu fait le traitement que tu veux et tu lui rends une vue. Si tu veux juste une valeur dans ta vue par exemple, tu ne met qu'un echo $maVariable, que tu set dans ton controller. Ainsi, la vue ne sera pas affiché, mais rendu en réponse Ajax.
Après, le mieux c'est de rendre du json, par habitude c'est ce que je fait. Du coup tu force le header en json dans ta vue.