ajax.js
Código:
enLinea.php/** * Función AJAX, para enviar información por el metodo GET o POST * y recibir una respuesta sin recargar la página en un <div></div> * especifico. * * @param pagina * @param respuesta * @param metodo * @param variables */ function consultar(pagina, respuesta, metodo, variables){ // Podríamos indicar que estamos cargando los datos.... que espere // document.getElementById(respuesta).innerHTML = 'Cargando datos...'; // Preparación de la variable 'pagina' en caso de que se haga uso del metodo GET if(metodo == 'GET'){ pagina = pagina + '?' + variables; } else{ if(metodo == ''){ metodo = 'POST'; } } // Compatibilidad con FireFox, Opera y cualquier otro BUEN navegador if(typeof(XMLHttpRequest) != 'undefined'){ try{ var satelite = new XMLHttpRequest(); } catch(e){ } } else{ // Compatibilidad para el navegador más ASQUEROSO del planeta [ IE ] try{ var satelite = new ActiveXObject('Microsoft.XMLHTTP'); } catch(e){ var satelite = new ActiveXObject('Msxml2.XMLHTTP'); } } // una vez incializado el objeto y definido en el contexto de nuestro script // Intentaremos abrir la conexión a la dirección indicada por la variable 'pagina' try{ // esto bien podría cambiar a "satelite.open('GET',pagina,true);" si se desea pasar los datos mediante método GET satelite.open(metodo,pagina,true); } catch(e){ return false; } // Esta variable envía una cabecera indicando que enviaremos los datos método 'post' en forma urlencoded // ejemplo ("mi_variable=cosa&otra_variable=otra_cosa"); satelite.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // Enviamos los datos 'elementos' satelite.send(variables); try{ // Justo cuando el estatus de la petición cambia esperamos a que sea igual a 4 que es igual a OK. satelite.onreadystatechange = function(){ if(satelite.readyState == 4){ // ¡¡¡ Listo !!!, ahora ya tenemos el resultado y podemos acceder a él desde 'satelite.responseText' // El resultado lo vamos a escribir en el elemento 'respuesta' ... document.getElementById(respuesta).innerHTML = satelite.responseText; } } } catch(e){ return false; } return true; }
Código PHP:
<?php
// este archivo va a mostrar SOLAMENTE a la respuesta
echo "Datos en GET: <pre>";
print_r($_GET);
echo "</pre>";
echo "Datos en POST: <pre>";
print_r($_POST);
echo "</pre>";
$usuarios_en_linea = 68;
echo "<strong>".$usuarios_en_linea."</strong>";
?>
Código HTML:
<html> <head> <script type="text/javascript" src="ajax.js"></script> <script type="text/javascript"> window.onload = function(){ // indicamos cada cuánto tiempo se lleva a cabo la consulta de // usuarios en línea consultar("enLinea.php","respuesta","POST","hola=12&hola2=12") } </script> </head> <body> <div id="respuesta"></div> </body> </html>
AJAX lo podriamos reducir a solo lafunción que pasé en un principio???? o que más faltaria????