Bonjour,

j'ai un problème avec ajax :(

j'ai une vue before_subscribe.ctp qui contient une div et un lien le voici :

<div class="beforeIns">
    <div class="insElem well">
        <p>
            Pas encore inscris à Esprit ?<br>
            Fait le dès aujourd'hui !
        </p>
        <?php
         <strong>echo $this->Html->link("Créer votre dossier d'admission", array('action' => 'info_subscribe'), array('class' => 'btn btn-info create'));</strong>
        ?>
    </div>
</div>

et voici mon script main.js :

$(document).ready(function() {
    $('.create').on('click', function (e){
        e.preventDefault();
        $.get($(this).attr('href'), {}, function(data){
            $('.beforeIns').empty().append(data); 
        });
        return false;
    });
    $('.prec').on('click', function (e){
        e.preventDefault();
        $.get($(this).attr('href'), {}, function(data){
            $('.beforeIns').empty().append(data); 
        });
        return false;
    });
});

mon problème c'est que quand je clique sur le lien d'id ajax dans la vue before_subscribe.ctp le contenu de la div change et il m'affiche la vue info_subscribe mais le 2 ème sélecteur $('#prec') ne marche pas voici la vue qui contient ce lien :

<?php 
echo $this->Html->link("Précédent", array('action' => 'info_subscribe'), array('class' => 'btn btn-success prec'));
?>

pouver vous m'aider à résoudre le problème merci :)

NB : j'ai essayer avec live() mais ca ne marche pas pour les deux et avec on() seulement le 1er

5 réponses


antho07
Réponse acceptée

D'accord j'ai cherché un peu, je pense que ceci va marcher:

$(document).ready(function() {
    $('.beforeIns').on('click', '.create',function (e){
        e.preventDefault();
        $.get($(this).attr('href'), {}, function(data){
            $('.beforeIns').empty().append(data); 
        });
        return false;
    });

    $('.beforeIns').on('click','.prec', function (e){
        e.preventDefault();
        $.get($(this).attr('href'), {}, function(data){
            $('.beforeIns').empty().append(data); 
        });
        return false;
    });
});

bien cordialement

Antho

Bonjour,
Il faut recharger le script js

Il me semble qu'avec cakephp , on peut mettre

<?php echo $this->Js->writeBuffer(array('inline' => 'true')); ?>

sur les 2 pages.

Ce sont des vieilles sources que je viens de relire... je suis pas convaincu ni sur la forme ni sur le fonctionnement encore aujourd'hui .. mais ça coûte rien d'essayer ^^

bien cordialement

Antho

ca ne donne rien

oui ca marche merci beaucoup :D

A noter que on duplique 2 fois le code ici... mettre une classe commune aux 2 liens pourra diminuer de moitié la quantité de js.