Buenos días.
Estoy intentando ponerme al día con ajax, pero me cuesta aún la interacción entre este y php:
El ejemplo es muy sencillito y corto. Intento adivinar un número que debería generarme php de manera aleatoria (ya sé que este ejemplo se podría hacer totalmente con javascript, pero, como digo, intento descubrir los misterios del ajax).
Archivo Adivina.html
Código HTML:
Ver original<!DOCTYPE html>
<script type="text/javascript" src="ajax.js" defer></script> <script type="text/javascript" src="codigo.js" defer></script> <input type="number" name="numero" id="numero" /> <input type="button" id="boton" value="Inténtalo!" />
Archivo ajax.js
Código Javascript
:
Ver originalvar peticion_http;
function cargaContenido(url, metodo, parametro, funcion) {
peticion_http = inicializa_xhr();
if(peticion_http) {
peticion_http.onreadystatechange = funcion;
peticion_http.open(metodo, url, true);
peticion_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
peticion_http.send(parametro);
//peticion_http.responseText;
}
}
function inicializa_xhr() {
if(window.XMLHttpRequest) {
return new XMLHttpRequest();
}
else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
function muestraContenido() {
if(peticion_http.readyState === 4) {
if(peticion_http.status === 200)
{
return peticion_http.responseText;
}
else // Este else no me vale para nada, ya que status se pone a 200 antes que readyState se ponga a 4.
alert("Esperando");
}
}
Archivo codigo.js
Código Javascript
:
Ver originalwindow.addEventListener('load', iniciar, false);
function iniciar()
{
document.getElementById('boton').addEventListener('click', enviar, false);
}
function enviar()
{
var cadena = document.getElementById('numero').id + "=" + document.getElementById('numero').value;
resultado = cargaContenido("adivina.php", 'POST', cadena, muestraContenido);
document.getElementById('resultado').textContent = resultado;
}
Archivo adivina.php
Código PHP:
Ver original<?php
$numero = $_POST['numero'];
{
if ($numero === $aleatorio)
{
echo "Acertaste";
}
else if ($numero > $aleatorio)
{
echo "Te has pasado";
}
else
echo "Te quedas corto";
}
else
$aleatorio = rand(1, 20);
//echo $aleatorio;
?>
Imagino que el problema está en el archivo php, que no devuelvo correctamente el valor (aunque pensaba que ajax.responseText recogía el echo) o, si no, en la forma de recoger el valor en ajax, (la llamada a la función CargaContenido no me devuelve nada).
¿Alguien puede orientarme?
Gracias.