Retroceder   Foros del Web > Programación para sitios web > AJAX

Respuesta
 
Herramientas Desplegado
Antiguo 24-abr-2006, 13:14   #1 (permalink)
JALF está en el buen camino
 
Avatar de JALF
 
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 566
Enviar un mensaje por MSN a JALF Enviar un mensaje por Yahoo  a JALF
Idea 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://www.3rooks.net/ -El blog de mis proyectos-
JALF está desconectado   Responder Citando
Antiguo 24-abr-2006, 22:36   #2 (permalink)
Nefertiter tiene algunos puntos positivos de karma
 
Avatar de Nefertiter
 
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.260
Enviar un mensaje por MSN a Nefertiter Enviar un mensaje por Yahoo  a Nefertiter Enviar un mensaje por Skype™ a Nefertiter
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
Nefertiter está desconectado   Responder Citando
Antiguo 25-abr-2006, 04:23   #3 (permalink)
zekenet está en el buen camino
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 243
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
zekenet está desconectado   Responder Citando
Antiguo 25-abr-2006, 09:14   #4 (permalink)
JALF está en el buen camino
 
Avatar de JALF
 
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 566
Enviar un mensaje por MSN a JALF Enviar un mensaje por Yahoo  a JALF
Alegría

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://www.3rooks.net/ -El blog de mis proyectos-
JALF está desconectado   Responder Citando
Antiguo 26-abr-2006, 03:17   #5 (permalink)
zekenet está en el buen camino
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 243
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.
zekenet está desconectado   Responder Citando
Antiguo 26-abr-2006, 12:10   #6 (permalink)
MaBoRaK llegará a ser famoso muy prontoMaBoRaK llegará a ser famoso muy pronto
 
Avatar de MaBoRaK
 
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 1.767
Enviar un mensaje por MSN a MaBoRaK
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@maborak.com
http://www.maborak.com
Maborak technologies
MaBoRaK está desconectado   Responder Citando
Antiguo 26-abr-2006, 21:48   #7 (permalink)
JALF está en el buen camino
 
Avatar de JALF
 
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 566
Enviar un mensaje por MSN a JALF Enviar un mensaje por Yahoo  a JALF
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://www.3rooks.net/ -El blog de mis proyectos-
JALF está desconectado   Responder Citando
Antiguo 27-abr-2006, 02:52   #8 (permalink)
zekenet está en el buen camino
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 243
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.
zekenet está desconectado   Responder Citando
Antiguo 28-abr-2006, 00:50   #9 (permalink)
uamistad está en el buen camino
 
Avatar de uamistad
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.384
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-
uamistad está desconectado   Responder Citando
Antiguo 28-abr-2006, 02:27   #10 (permalink)
zekenet está en el buen camino
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 243
yo separaria la declaracion del objeto ajax en otra funcion para darle mayor legibilidad y estructura
zekenet está desconectado   Responder Citando
Antiguo 28-abr-2006, 12:24   #11 (permalink)
JALF está en el buen camino
 
Avatar de JALF
 
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 566
Enviar un mensaje por MSN a JALF Enviar un mensaje por Yahoo  a JALF
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://www.3rooks.net/ -El blog de mis proyectos-
JALF está desconectado   Responder Citando
Antiguo 29-abr-2006, 06:26   #12 (permalink)
uamistad está en el buen camino
 
Avatar de uamistad
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.384
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-
uamistad está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 05:02.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93