Bonjour,
Je cherche désespérément la solution à ce problème qui me pourrit la vie de puis un certain temps.
J'explique.
1. J'ai une page principale (appelons-là pageprincipale.php) qui contient un div, et un lien (de type a onClick).
2. Lorsque l'utilisateur clique sur ce lien, une fonction Ajax est appelée pour remplir un div de la page, en asynchrone. Jusque là, tout va bien, ça fonctionne, la fonction Ajax est appelée, le div est rempli par le contenu d'une autre page php, appelons-là : partieajax.php
2. Dans cette partie Ajax, j'ai un bouton, censé appeler une fonction jQuery (slideToggle), pour déplier / replier un autre div (également dans cette partieajax.php), avec effet progressif.
Et c'est là le problème. Le bouton est inopérant, et la fonction jQuery n'est jamais appelée.
Je m'arrache les cheveux depuis deux jours sur ce soucis, donc, je vous poste une version hyper simplifiée du code, avec seulement les éléments dont je vous parle ci-dessus.
Merci par avance pour votre aide,
Stéphane
PS : je précise que si je transforme la partieajax.php, en page complète avec un head, un body, et les fonctions Ajax + inclusion de la librairie jQuery, le Toggle fonctionne parfaitement. C'est uniquement quand cette page est appelée via Ajax, que le lien jQuery devient inopérant à l'intérieur...
La page principale, "pageprincipale.php" :
La partie ajax "partieajax.php" :
Modifié par WebDevParis (17 May 2017 - 17:29)
Je cherche désespérément la solution à ce problème qui me pourrit la vie de puis un certain temps.
J'explique.
1. J'ai une page principale (appelons-là pageprincipale.php) qui contient un div, et un lien (de type a onClick).
2. Lorsque l'utilisateur clique sur ce lien, une fonction Ajax est appelée pour remplir un div de la page, en asynchrone. Jusque là, tout va bien, ça fonctionne, la fonction Ajax est appelée, le div est rempli par le contenu d'une autre page php, appelons-là : partieajax.php
2. Dans cette partie Ajax, j'ai un bouton, censé appeler une fonction jQuery (slideToggle), pour déplier / replier un autre div (également dans cette partieajax.php), avec effet progressif.
Et c'est là le problème. Le bouton est inopérant, et la fonction jQuery n'est jamais appelée.
Je m'arrache les cheveux depuis deux jours sur ce soucis, donc, je vous poste une version hyper simplifiée du code, avec seulement les éléments dont je vous parle ci-dessus.
Merci par avance pour votre aide,
Stéphane
PS : je précise que si je transforme la partieajax.php, en page complète avec un head, un body, et les fonctions Ajax + inclusion de la librairie jQuery, le Toggle fonctionne parfaitement. C'est uniquement quand cette page est appelée via Ajax, que le lien jQuery devient inopérant à l'intérieur...
La page principale, "pageprincipale.php" :
<html>
<head>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
function getXMLHttpRequest(){
var XHR = false;
if (window.XMLHttpRequest) {
XHR = new XMLHttpRequest();
if (XHR.overrideMimeType) {
XHR.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) {
try {
XHR = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XHR = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!XHR) {
alert('Abandon : Impossible de créer une instance XMLHTTP');
return false;
}
return XHR;
}
function RunAjax(url,id_resultat) {
var XHR = getXMLHttpRequest();
XHR.onreadystatechange = function (){traitement_reponse(XHR,id_resultat);}
XHR.open('POST', url, true);
XHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
XHR.send(null);
}
function traitement_reponse(XHR,id_resultat){
if(XHR.readyState == 4 ){
if(XHR.status == 200) {
var reponse=XHR.responseText;
document.getElementById(id_resultat).innerHTML=reponse;
$.unblockUI();
}
}
}
</script>
</head>
<body>
<a onClick="RunAjax('partieajax.php', 'dynamiczone');">afficher la partie ajax</a>
<div id="dynamiczone">
</div>
</body>
</html>
La partie ajax "partieajax.php" :
<button class="lebouton">Replier / Deplier</button>
<p class="laclasse">
voici le paragraphe a replier / deplier
</p>
<script>
$( ".lebouton" ).click(function() {
$( ".laclasse" ).slideToggle( "slow" );
});
</script>
Modifié par WebDevParis (17 May 2017 - 17:29)