Foros del Web » Programando para Internet » Javascript » Frameworks JS »

AJAX lo podemos reducir a está función en JavaScript????

Estas en el tema de AJAX lo podemos reducir a está función en JavaScript???? en el foro de Frameworks JS en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/04/2006, 13:14
Avatar de JALF  
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 634
Antigüedad: 19 años, 7 meses
Puntos: 2
AJAX lo podemos reducir a está función en JavaScript????

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????
__________________
Ubuntu User # 15554
http://dubaiphp.wordpress.com/ -Mi vida de desarrollo, juegos y algo más en un Blog-
  #2 (permalink)  
Antiguo 24/04/2006, 22:36
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
ajax es el conjunto de tecnicas q utilices para hacer llamadas al servidor sin la necesidad de refresacar la pagina, el Objeto XMLHttpRequest() es el ahora mas usado, lo q se conoce hoy como Ajax es mucho Javascript :P, si querse ver mas mira las FAQS
  #3 (permalink)  
Antiguo 25/04/2006, 04:23
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 18 años, 10 meses
Puntos: 1
Esta bien la funcion para ahorrarte cosas, yo tambien me hice una parecida, pero ajax es mucho mas, no bastaria con solo esto. Que pasaria si lo que quiero es que depende de lo que me devuelva el servidor ejecute una funcion u otra, o q lo qe me devuelva el ajax sea el nombre de una funcion a ejecutar y sus parametros... con lo que nos das no se podria ya que solo pinta lo que devuelve en una capa, pero de todas formas esta muy muy currada
  #4 (permalink)  
Antiguo 25/04/2006, 09:14
Avatar de JALF  
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 634
Antigüedad: 19 años, 7 meses
Puntos: 2
Cita:
Iniciado por zekenet
Esta bien la funcion para ahorrarte cosas, yo tambien me hice una parecida, pero ajax es mucho mas, no bastaria con solo esto. Que pasaria si lo que quiero es que depende de lo que me devuelva el servidor ejecute una funcion u otra, o q lo qe me devuelva el ajax sea el nombre de una funcion a ejecutar y sus parametros... con lo que nos das no se podria ya que solo pinta lo que devuelve en una capa, pero de todas formas esta muy muy currada
OK gracias por la aclaración aunque...... creo que todo eso se podria solucionar antes de dar una respuesta, por ejemplo analizar todo en PHP y cuando se da una respuesta pues........ me imagino que podria solucionar en parte lo que dices!!!

Pero de todos modos gracias por el aporte!!!

ALGUIEN MAS PUEDE APORTAR ALGO????
__________________
Ubuntu User # 15554
http://dubaiphp.wordpress.com/ -Mi vida de desarrollo, juegos y algo más en un Blog-
  #5 (permalink)  
Antiguo 26/04/2006, 03:17
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 18 años, 10 meses
Puntos: 1
Tambien otra cosa. Solo usas responseText, pero si lo que quiero es un XML y recibirlo por responseXML y usar DOM (getElementsByTagName) para acceder al XML y las variables tampoco seriviria la funcion.
Por cierto no entiendo tu mensaje anterior, no querias una critica sobre tu funcion y si funciona o no o que le falta para reducirla a una funcion. De todas formas no creo que se pueda reducir todo lo que puedes hacer con AJAX a una funcion.
  #6 (permalink)  
Antiguo 26/04/2006, 12:10
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
loading.............


Una de las grandes desventajas de estas ideas es, el documentGetELementByIDblablabla =responseTextblabla osea ahi pones el contenido del proceso a un lugar X

pero si quieres procesar ese contenido? si quieres poner el contenido en muchos lugares? se vuelve obsoleto. pero para una peticion simple con una renderizacion simple, esta buena.



connection closed.
__________________

Maborak Technologies
  #7 (permalink)  
Antiguo 26/04/2006, 21:48
Avatar de JALF  
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 634
Antigüedad: 19 años, 7 meses
Puntos: 2
De acuerdo

Cita:
Iniciado por zekenet
Tambien otra cosa. Solo usas responseText, pero si lo que quiero es un XML y recibirlo por responseXML y usar DOM (getElementsByTagName) para acceder al XML y las variables tampoco seriviria la funcion.
Por cierto no entiendo tu mensaje anterior, no querias una critica sobre tu funcion y si funciona o no o que le falta para reducirla a una funcion. De todas formas no creo que se pueda reducir todo lo que puedes hacer con AJAX a una funcion.
Gracias a los dos por las respuestas!

Bueno........ pues la verdad a AJAX no le veo ninguna otra función más que enviar una petición con variables y traer la respuesta a un sitio en especifico! la verda no le encuentro más utilidad pero me imagino que debe de haberla!

Me podrian decir como que otra utilidad tendria??????
__________________
Ubuntu User # 15554
http://dubaiphp.wordpress.com/ -Mi vida de desarrollo, juegos y algo más en un Blog-
  #8 (permalink)  
Antiguo 27/04/2006, 02:52
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 18 años, 10 meses
Puntos: 1
Cita:
Iniciado por JALF
Bueno........ pues la verdad a AJAX no le veo ninguna otra función más que enviar una petición con variables y traer la respuesta a un sitio en especifico! la verda no le encuentro más utilidad pero me imagino que debe de haberla!
Para definir Ajax mas correctamente: es la comunicación asincrona con el servidor desde el cliente.
  #9 (permalink)  
Antiguo 28/04/2006, 00:50
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Leí sus opiniones, está bueno el tema.

Oigan y esa función que hace dos funciones (va por la info y luego la pinta en
DIV, ¿no la podríamos dividir en dos?

Me gustaría hacer una analogía con otro tipo de funciones.

Código PHP:
<?
$texto_en_variable 
file_get_contents("un_archivo.txt");

$texto_en_mayusculas strtoupper($texto_en_variable);

echo 
$texto_en_mayusculas;
?>
O sea, cada función hace una sola cosa y las podemos combinar de varias formas para diferentes propósitos.

En la función de Jalf se están haciendo dos funciones y eso le resta efectividad, se obtiene el texto y se imprime.

Si quisiéramos ese texto, no para imprimirlo, sino para tomar alguna decisión desde Javascript (redireccionar a otra página, mostrar algún DIV u ocultarlo, etc), ya no serviría.

Me imagino que se podría tener más power con algo como:

var miTexto = getFromURL( -aquí la URL con sus parámetros - )

Y hacer miTexto lo que se les ocurra:

switch(miTexto){
case "error1": -lanzar un alert-
case "error2": -lanzar otro alert-
case "ok1": -Imprimir la info recibida en capa 1 -
case "ok2": -Imprimir la info recibida en capa 2 -
case "fun1": -ejecutamos la funcion1-
case "fun2": -ejecutamos la funcion2-
default: -whatever-
}

Aunque en este momento me estoy preguntando si todo se puede enviar ya digerido desde PHP, los ALERT, por ejemplo, cualquier tipo de proceso (como lo de la conversión a mayúsculas), pues la función de Jalf no necesitaría modificaciones. Aunque cómo lanzar funciones ya definidas desde Js, qué se les ocurre?

Ok, ok, sigue teniendo los mismos inconvenientes viéndolo desde la parte de XML (de la que hasta ahora entiendo poco), sigan opinando, saquen las botanas y discutamos. =)
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #10 (permalink)  
Antiguo 28/04/2006, 02:27
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 18 años, 10 meses
Puntos: 1
yo separaria la declaracion del objeto ajax en otra funcion para darle mayor legibilidad y estructura
  #11 (permalink)  
Antiguo 28/04/2006, 12:24
Avatar de JALF  
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 634
Antigüedad: 19 años, 7 meses
Puntos: 2
muy buena idea!!!!
voy a separarlo a ver, o a crear entonces dos funciones una para pedir e imprimir y otra solo para imprimir o las separo, ahora más rato vuelvo con el resultado
__________________
Ubuntu User # 15554
http://dubaiphp.wordpress.com/ -Mi vida de desarrollo, juegos y algo más en un Blog-
  #12 (permalink)  
Antiguo 29/04/2006, 06:26
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Yo estuve tratando, pero no conseguí que la famosa función devolviera el resultado que fue a buscar al server.

Voy a decir una tontería, pero es como si la función tuviera mucha prisa por regresar un valor y como no puede hacerlo inmediatamente (ya que hay que ir por el valor al server), entonces prefiere no devolver valores .

En fin, seguiré a ver qué pex. Alrato posteo el código, seguramente tengo un bug.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:20.