2009-06-06 11 views
0

Je travaille sur une simple page AJAX. lorsque la page se charge, elle devrait prendre le résultat de la page PHP et l'afficher dans la zone de texte. Si le résultat est "1" (ce qu'il devrait être), alors il devrait apparaître une alerte disant "Prêt".Ajax renvoie des valeurs aléatoires?

Code de la page principale (t1_wait.php):

<html><head><title>Waiting...</title></head><body> 

<script type="text/javascript"> 
function update(id) 
{ 
    var xmlhttp; 
    if (window.XMLHttpRequest){ 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    }else if (window.ActiveXObject){ 
     // code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    }else{ 
     alert("Your browser does not support XMLHTTP!"); 
    } 

    xmlhttp.onreadystatechange=function(){ 
     if(xmlhttp.readyState==4){ 
     if(xmlhttp.responseText=="1") 
      alert("Ready!"); 
     } 
     document.myForm.status.value=xmlhttp.responseText; 
     } 
    } 

    var requesturl = "t1_checkMatch.php?id="+id; 
    xmlhttp.open("GET",requesturl,true); 
    xmlhttp.send(null); 

    // delay for 1 sec 
    var date = new Date(); 
    var curDate = null; 
    do { curDate = new Date(); } 
    while(curDate-date < 1000); 

} 

<?php 
    echo "update(".$_GET['id'].");"; 
?> 

</script> 


<form name="myForm"> 
Status: <input type="text" name="status" /> 
</form> 

</body></html> 

La page PHP étant appelé à (t1_checkMatch.php) (toutes les informations db remplacé par *****):

<?php 
$db_user = "*****"; 
$db_pass = "*****"; 
$db_name = "*****"; 
mysql_connect(localhost,$db_user,$db_pass); 
@mysql_select_db($db_name) or die("Unable to select database"); 

$match_id = $_GET['id']; 

$match_info = mysql_query("SELECT * FROM ***** WHERE id=".$match_id); 
if(mysql_result($match_info,0,"usr2")==-1){ 
    echo "1"; 
}else{ 
    echo "0"; 
} 
?> 

Quand je vais à la t1_wait.php? Id = 16 (la page principale passant id = 16 par GET), il devrait envoyer une demande à t1_checkMatch.php? Id = 16, qui renvoie (oui, j'ai vérifié) 1. Cela devrait déclencher une alerte disant "Prêt" et faire apparaître 1 dans la zone de texte, mais aucune de ces choses n'arrive. La zone de texte est vide.

Qu'est-ce qui ne va pas? Merci!

+0

Pourquoi inventer la roue, encore une fois? Avec l'une des bibliothèques (mootools, par exemple), tout votre code JS aurait été réduit à 1-5 lignes au maximum. –

+0

Et puis il ajouterait quelques centaines pour mootools :) – Matt

Répondre

0

Ok. Je l'ai compris, mais je ne sais pas ce que j'ai fait. J'ai eu une faute de frappe, mais ce n'est pas le problème. Le code PHP est le même, voici le code de la page principale:

<html> 
<body> 

<script language="javascript" type="text/javascript"> 
<!-- 
//Browser Support Code 
function update(id){ 
    var ajaxRequest; // The variable that makes Ajax possible! 

    try{ 
     // Opera 8.0+, Firefox, Safari 
     ajaxRequest = new XMLHttpRequest(); 
    } catch (e){ 
     // Internet Explorer Browsers 
     try{ 
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try{ 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e){ 
       // Something went wrong 
       alert("Your browser broke!"); 
       return false; 
      } 
     } 
    } 
    // Create a function that will receive data sent from the server 
    ajaxRequest.onreadystatechange = function(){ 
     if(ajaxRequest.readyState == 4){ 
      if(ajaxRequest.responseText.indexOf("1")!=-1){ 
       document.myForm.status.value = "Ready!"; 
       window.location = "t1_game.php?id="+id; 
      }else{ 
       document.myForm.status.value = "Waiting..." 
       update(id); 
      } 
     } 
    } 
    ajaxRequest.open("GET", "t1_checkMatch.php?id="+id, true); 
    ajaxRequest.send(null); 
} 

<?php 
echo "update(".$_GET["id"].");" 
?> 

//--> 
</script> 



<form name='myForm'> 
Status: <input type='text' name='status' /> 
</form> 
</body> 
</html> 
+0

Est-ce une question, ou votre problème est-il résolu? – Matt

+0

son résolu, je voulais juste mettre là au cas où quelqu'un d'autre a le même problème – Computerish

2

Je crois que le problème que vous utilisez en est due à une faute de frappe

xmlhttp.responceText

devrait vraiment être

xmlhttp.responseText 

- Mise à jour

Il apparaît également qu'il vous manque un {:

if(xmlhttp.responseText=="1") 
    alert("Ready!"); 
} 

Devrait être

if(xmlhttp.responseText=="1"){ 
    alert("Ready!"); 
} 
+0

Vous corrigez également, mais cela n'a rien changé. – Computerish

1

Vous avez une erreur d'orthographe:

if(xmlhttp.responceText=="1") 

devrait être:

if(xmlhttp.responseText=="1") 

(vous orthographié réponse à tort)

Questions connexes