FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Ajax.class.js - Sencilla forma de hacer peticiones HTTP en segundo plano
Hola,
Escribí hace tiempo una sencilla clase en JavaScript para tratar con el objeto famoso XmlHttpRequest. Es unan sencilla clase porque no pretende ir muy allá, y, sin embargo, llevo un par de días añadiendo y quitando alguna que otra cosa. El caso es que he pensado que acaso vosotros podéis decir algo al respecto: que sobra algo, que podría añadírsele tal o cual cosa, en fin, lo que gustéis. A continuación copio el código de la clase JavaScript. El código HTML, CSS, JS y su "funcionamiento" puede verse aquí: http://dec.clubdelphi.com/ajax.class.js/ Puede descargarse todo el código fuente (incluído PHP) desde aquí: http://dec.clubdelphi.com/ajax.class...x.class.js.zip Código PHP:
Ojo que la clase no pretende ser completa, en el sentido de aprovechar al máximo el objeto XmlHttpRequest. Se trata, al contrario, de conseguir una forma muy sencilla de usar dicho objeto, aunque nos perdamos algunas de sus características. Una cosa que puedo decir ya que le falta a la clase Ajax (je) es que no "avisa" del progreso de la tarea. Es decir, que no sé muy bien cómo enfocar este tema. Por otro lado está el caso de que la tarea (petición HTTP) falle. Tampoco ante esto me parece muy claro el comportamiento de la clase. Pero, en fin. Yo lo dejo ahí que parecía que no podía dejar de hacerlo. No os veáis obligados a comentar ni a decir ni a dejar de decir. Al fin y al cabo es un poco de código el que he puesto en este Hilo, por si le puede servir a alguien, por si alguien quiere comentar algo, pero, no pretendo ir mucho más allá. Última edición por dec fecha: 10-01-2007 a las 17:12:34. |
#2
|
||||
|
||||
Cita:
__________________
Saludos Emilio |
#3
|
||||
|
||||
Hola,
Eso está hecho. Si no lo hize antes es porque pensé que era acaso mejor así, sin comentarios, pero, tienes razón, y además no vendrá mal. Lo comento y lo subo comentado y edito el mensaje y actualizo el archivo Zip de marras en unos momentos... |
#4
|
|||
|
|||
Una consulta dec, como se hace para capturar con tu libreria los valores de uno o mas inputs utilizando el metodo POST?
|
#5
|
|||
|
|||
Hola
Buen trabajo dec. |
#6
|
||||
|
||||
Veo muy bien la clase. En particular me gustan los "eventos" para el progreso y el final de la operación. Si no te parece mal, creo que puedo complementar tu clase con mi función parseForm que toma como parámetro un formulario HTML y devuelve el query que requiere tu método HttpRequest (o casi). Hace tiempo que no lo reviso y me parece que faltan cosas, pero ahí está la idea.
Primero, tenemos la clase HttpParams que básicamente es una lista de parámetros y valores: Código PHP:
La función parseForm: Código PHP:
// Saludos |
#7
|
||||
|
||||
Hola,
Cita:
Respecto de la clase de marras... no sé. Al cabo se sale de madre. Si la intención era que no fuera menester utilizar muchos parámetros en los métodos "más completos", lo cierto es que no se consigue, puesto que al cabo hay que pasar hasta seis parámetros... Lo cierto es que intenté limitar estos pasando a una sola función el objeto "request", y que fuera dicha función la que se encargara de completar la tarea, comprobando el "readyState" y el "status". Sin embago esto no funciona. No me pregunten porqué, pero, no funciona. Y el caso es que creo recordar haber intentado lo mismo hace tiempo... con el mismo nulo resultado. No sé. Al cabo creo que lo suyo es tener más o menos claro cómo funciona el objeto "XmlHttpRequest", formar una clase básica para utilizarlo, y, a partir de ahí, ya saben, cada proyecto es un mundo... En fin. Que creo que la clase es un éxito sólo relativo y quedan no pocos flecos por ahí que no convencen demasiado. Lo que propone Román es muy interesante, desde luego, y puede que en algunos casos fuera muy curioso hacer las cosas de ese modo: mandando todo el formulario en la petición HTTP y a partir de ahí obrar. |
#8
|
||||
|
||||
Cita:
En cuanto a lo que mencionas de muchos parámetros pues de cualquier manera has de pasarle información. Una forma de hacerlo es con parámetros y otra con propiedades del objeto, y no estoy seguro cual pueda ser más práctica. // Saludos |
#9
|
||||
|
||||
Hola,
A mí se me hace más práctico utilizar parámetros de una función. ¿Porqué? Bueno. Quizás porque cuando he venido utilizando JavaScript lo he hecho mediante PHP, y, bueno, quizás se me hace más sencillo algo como esto: Código PHP:
Ahora mismo acabo de dejar el asunto como sigue: cuatro funciones o métodos; todos ellos incluyen la posibilidad de indicar una función que muestre el progreso de la tarea y otra función que esté atenta al final de la misma. En los dos primeros se asume el método a utilizar, de modo que no hace falta pasarlo como parámetro, y también se asume que la petición "GET" o "POST" no tendrá "query" alguna, por lo que tampoco hace falta pasar ese parámetro. Lo siguiente es real y forma parte del ejemplo de la clase/variable/lo que sea: Código PHP:
Lo mismo para el método "Post", es decir: Código PHP:
Código PHP:
Respecto de la notación que puedes ver Román... yo no tengo mucha idea de JavaScript, no nos vamos a engañar, sin embargo, en algún sitio la ví y comenzé a utilizarla... comprendo que tú usas otra que también me consta que se utiliza... y que yo no uso porque me parece más liosa, sin duda por mi ignorancia. PD. El ejemplo de todo esto sigue pudiéndose ver en: http://dec.clubdelphi.com/ajax.class.js/ Notar que el progreso de la tarea en realidad se fuerza usando la función "sleep" de PHP. En realidad las peticiones son tan sencillas y ocupan tan poco que no requieren prácticamente tiempo, pero, entonces no se vería "el progreso" tal como se vería en situaciones más reales. PD2: Me dio por buscar si había forma de pasar un Array de PHP a JavaScript... por aquello de pasar un parámetro únicamente que los contuviera a todos... pero, aunque ví que había algo ya por ahí no quise ir más allá. Creo que con lo que hay ahora mismo podrían ya hacerse cosas... Última edición por dec fecha: 11-01-2007 a las 01:32:29. |
#10
|
||||
|
||||
Cita:
¿O será que te refieres a algo como JSON? En el Sofa Naranja puedes ver un ejemplo del "paso" del array. Por cierto, ¿qué hay de esto? Cita:
|
#11
|
||||
|
||||
Hola,
Cita:
Cita:
Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Librería para hacer peticiones HTTP para delphi 5 | rlago | Internet | 3 | 06-11-2006 10:28:18 |
Ping en segundo plano | toorbye | Internet | 5 | 19-10-2006 13:52:32 |
Programar en segundo plano | Isako | API de Windows | 3 | 02-03-2005 14:31:20 |
Ayuda con Teclas en Segundo Plano | Sundance | Varios | 12 | 29-08-2004 18:09:18 |
Ejecutar selects en segundo plano | cartmanrules | Firebird e Interbase | 2 | 27-05-2004 19:08:56 |
|