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
Archivo ajax.js
Código Javascript:
Ver original
var 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 original
window.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
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.