[AJAX] Le retour d'AJAX n'est pas "actif"
Bonjour à tous...
donc pour la mise en place de mon site perso je cherche à mettre en place un bloc de log indépendant .... pour cela, lorsque un utiliateur se logue, il ne faut rafraichir que cette zone ... j'ai donc utliser de l'ajax...
Mais j'ai un problème avec les boutons régénerer par l'AJAX, en effet la mise à jour se passe bien (sur l'affichage) mes mon bouton ne s'active pas ... ....
Donc je vous post mes codes ...
le fichier getXhr.js
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<script language = javascript>
var xhr = null;
//fct pour créer un objet XMLHTTPREQUEST
function getXhr(){
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
}
</script> |
le fichier log.js
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
<script language = javascript>
/*fct qui sert à rafraîchir le bloc de log
PARAMETRES A FOURNIR : le cas de rafraichissement
1 = login
2 = logout
*/
function log(cas)
{
//alert(cas);
//on crée un objet XMLHttpRequest
getXhr();
//Sur changement d'état de l'objet xhr,
//on actualise la balise DIV
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a
// tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
retour = xhr.responseText;
//alert(retour);
document.getElementById('div_log').innerHTML = retour;
}
}
// on appelle la page qui rafraîchit
// le contenu de la balise div
xhr.open("POST",'log2.php',true);
// ne pas oublier le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
if(cas==1)
{
//login
log = document.getElementById('zt_log').value;
mdp = document.getElementById('zt_mdp').value;
xhr.send('log='+log+'&mdp='+mdp);
}
if(cas==2)
{
//logout
xhr.send('logout=1');
}
}
</script> |
le fichier log2.php
(c'est un extrait du fichier complet ..avec le minimum qui ne fonctionne pas non plus.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
<?php session_start();
//*************************
//*** ctrl de connexion ***
//*************************
//si logout
if(isset($_POST['logout']))
{ session_unset($_SESSION['user']); }
//si login
if(isset($_POST['log']) && isset($_POST['mdp']))
{ $_SESSION['user']="damien"; }
//*************************
//*** affichage ***
//*************************
//si l'user est logué on propose le logout
if(isset($_SESSION["user"]))
{
$user=$_SESSION["user"];
echo "bienvenue $user <br />";
echo "<input type=button value='deconnexion' id='bt_logout' name='bt_logout' onclick='log(2)'/>";
}
else // si il n'y a pas d'user logué, on propose le log ...
{
echo "<label for='zt_log'>Login</label><input type=text id='zt_log' name='zt_log' /><br />";
echo "<label for='zt_mdp'>MDP</label><input type=password id='zt_mdp' name='zt_mdp' /><br />";
echo "<input type=button value='log' id='bt_log' name='bt_log' onclick='log(1)'/>";
}
?> |
et enfin le fichier tmp.php
(mon but au final c'est d'avoir un template général pour mon site
pour le moment ce fichier me sert à tester le log)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
<?php session_start(); ?>
<html>
<head>
<?php
require('getXhr.js');
require('log.js');
?>
</head>
<body>
<div id='div_log'>
<?php require('log2.php'); ?>
</div>
</body>
</html> |
voila mes 4 fichiers ... si vous pouviez les tester .... et m'expliquer pourquoi ça ne fonctionne pas (le but c'est de se logué : ca marche , et de se delogué : ca ne marche pas.)
Merci à tous
Bonne journée
DrDam