Ajax lo podríamos reducir a esta simple función en JavaScript??? o que más faltaria???
ajax.js
Código:
/**
* 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;
}
enLinea.php 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>";
?>
index.html 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>
Los dos ultimos archivos es para dar un ejemplo de la función ya trabajando!!!! pero....... vuelvo y pregunto!
AJAX lo podriamos reducir a solo lafunción que pasé en un principio???? o que más faltaria????