Estoy trabajando en una página simple de AJAX. cuando se carga la página, debe tomar el resultado de la página PHP y mostrarlo en el cuadro de texto. Si el resultado es "1" (que debería ser), debería aparecer una alerta que diga "Listo".

Código de la página principal (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 página PHP que se llama a (t1_checkMatch.php) (toda la información de base de datos reemplazada por *****):

<?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";
}
?>

Cuando voy a t1_wait.php? Id = 16 (la página principal pasa id = 16 a través de GET), debería enviar una solicitud a t1_checkMatch.php? Id = 16, que devuelve (sí, lo comprobé) 1. Esto debería activa una alerta que dice "Listo" y hace que aparezca 1 en el cuadro de texto, pero ninguna de estas cosas sucede. El cuadro de texto está en blanco.

Que pasa ¡Gracias!

0
Computerish 6 jun. 2009 a las 05:45

3 respuestas

La mejor respuesta

Okay. Lo descubrí, pero no sé lo que hice. Tuve un error tipográfico, pero ese no es el problema. El código PHP es el mismo, aquí está el código de la página principal:

<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
Computerish 6 jun. 2009 a las 03:30

Creo que el problema con el que te encuentras se debe a un error tipográfico

xmlhttp.responseText

Realmente debería ser

xmlhttp.responseText

- Actualización

También parece que te falta un {:

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

Debe ser

if(xmlhttp.responseText=="1"){
   alert("Ready!");
}
2
Jordan S. Jones 6 jun. 2009 a las 02:03

Tienes un error ortográfico:

if(xmlhttp.responceText=="1")

Debe ser:

if(xmlhttp.responseText=="1")

(deletreaste la respuesta incorrectamente)

1
Matt 6 jun. 2009 a las 01:51