Le principe Ajax:
suite à un évenement dans ta page (click sur un lien, sur un bouton) la fonction ajax est lancée
elle fait une requette "en arrière plan" (sans rechargement de la page)
elle appele un script php (vot.php) sur le serveur en lui envoyant des valeurs en POST
ce script reçoit ces valeurs, tu fais le traitement que tu veux ey qd c'est fini il envoie la réponse à Ajax au navigateur du poste client
la partie traitement de la réponse à la réception, vient écrire cette réponse dans le div spécifié par l'id
Alors essayes comme ça:
ta page :
<code><html>
<head>
<script language="javascript" type="text/javascript">
function vote(url,valeur_vote,ip_client,id_ecrire){
var http_request = false;
//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
// lancement de la requete
http_request.open('POST', url, true);
//changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'....
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
data="valeur_vote="+valeur_vote+"&ip="+ip_client;
//envoie des valeurs au script distant
http_request.send(data);
}
function traitementReponse(http_request,id_ecrire) {
var affich="";
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// cas avec reponse de PHP en mode texte:
//chargement des elements reçus dans la liste
var reponse=http_request.responseText;
//alert(reponse);
obj = document.getElementById(id_ecrire);
obj.innerHTML = reponse;
}
else {
alert('Un problème est survenu avec la requête.');
}
}
}
</script>
</head>
<body>
...............
<?php
$id=$donnees['id'];
?>
<a href="javascript:vote('vote.php','adore','<?php echo $id; ?>','id_reponse');">J'adore</a><br />
<a href="javascript:vote('vote.php','naze','<?php echo $id; ?>','id_reponse');">C'est naze</a><br />
<div id='id_reponse'><!-- ici sera écrite la réponse Ajax --> </div>
</body>
</html>
et le script vote.php
<?php
//reucup valeurs envoyées
$valeur_vote=$_POST['valeur_vote']; // ça va contenir adore ou naze
$ip=$_POST['ip'];
//tu fais le traitement que tu veux, enregistrement etc..
//puis la réponse :
$reponse="Votre vote a été pris en compte, merci";
echo $reponse;
?></code>
@lain