LE contenu entier de la page est remplacé et pas uniquement le div

joptitchou84 Messages postés 1 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 21 janvier 2010 - 21 janv. 2010 à 16:07
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 21 janv. 2010 à 20:16
Hello :)

J'ai un problème avec mon script de notation étoilé que j'essaye de faire. (c'est la première fois que je bosse avec javascript)

Au lieu de parler en long et en large, je pense que les codes seront plus parlant :

javascript:

<script type="text/javascript">
<!-- 
function request(callback) {
var xhr = getXMLHttpRequest();

xhr.onreadystatechange = function() {
if (xhr.readyState 4 && (xhr.status 200 || xhr.status == 0)) {
var res = callback(xhr.responseText);
document.getElementById("test").style.display = "none";			

} else if (xhr.readyState < 4) {
document.getElementById("test").style.display = "inline";
}
};
//ICI si y a un guillemet ou autre, un slash s ajoute.
var id = encodeURIComponent(document.getElementById("id").value);
var note = encodeURIComponent(document.getElementById("note").value);

    xhr.open("GET", "script_vote.php?id=" + id + "&note= " + note, true);
    xhr.send(null);
}

function readData(sData) {
//alert(sData);
document.getElementById('reponseAjax').innerHTML = (sData);  
}

request(readData);
</script>


Partie de code php:
<?php
if(isset($_GET['id']) and isset($_GET['note']))
{ 
//$id est le nom du site de jeux/nom unique identifiant le vote
$id = ucfirst(trim(htmlspecialchars(addslashes(mysql_real_escape_string($_GET['id'])))));
$note = trim(intval($_GET['note']));

if($note <= 5 && $note >= 1)
{
//On verifie si le membre a deja vote	
$verifVote mysql_query('SELECT id FROM Votes WHERE Pseudo "'.$_SESSION['pseudo'].'" AND id_du_vote = "'.$id.'"');
    
     if(mysql_num_rows($verifVote) > 0)
     {
     //on calcule la moyenne 
 
//On revoie a ajax que le membre a deja vote
echo '
  <li class="note-actu" style="width:'.$pourcent.';" id="note"></li>
  <li>[# ]</li>
  <li>[# ]</li>  
  <li>[# ]</li>
  <li>[# ]</li> 
  <li>[# ]</li>
';							
} 
}
}
?>


le code html

Chargement en cours...


<?php
echo'

  <li class="note-actu" style="width:0%;" id="note"></li>
  <li>[script_vote.php?id=mince&note=1 ]</li>
  <li>[script_vote.php?id=mince&note=2 ]</li>  
  <li>[script_vote.php?id=mince&note=3 ]</li>
  <li>[script_vote.php?id=mince&note=4 ]</li> 
  <li>[script_vote.php?id=mince&note=5 ]</li>
';

?>
    



</html>


Lien test: http://www.voilou.fr/test2.php

Ainsi cela fonctionne, le vote est soumis, les données mis à jour dans la base...

Le problème c'est que cela retourne uniquement les données du code php et le reste de la page est supprimé..

En gros, au lieu de retourner la page html ci dessus, cela retourne juste

  <li class="note-actu" style="width:'.$pourcent.';" id="note"></li>
  <li>[# ]</li>
  <li>[# ]</li>  
  <li>[# ]</li>
  <li>[# ]</li> 
  <li>[# ]</li>


Comment cela se fait il? Car normalement il devrait que insérer ces données dans le div reponseAjax non?

MErci

1 réponse

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
21 janv. 2010 à 20:16
Bonjour,
1st tu appelles la fonction request(readData);, dans la partie script, qui elle fait appel à un document.getElementById("test"), alors que l'élément test n'est pas encore défini dans ta page

2nd tu fais appel à cette même fonction sur les onclick et il en suit les mêmes erreurs donc...
[b]
3th/b tu écris href="script_vote.php?id=mince¬e=1, ce qui a pour conséquence de remplacer la page courante par la page script_vote.php, ce qui est en effet bien le cas mais pas ce que tu souhaites...

;O)
0