![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
La verda es que me es difícil seguir el hilo y al final no nos dices cómo estás pasando el parámetro.
Aquí te pongo un ejemplo que me funciona: Código:
/*
crea un objeto HttpRequest
*/
function createRequest()
{
// no implementada, simplemente debe crear
// el objeto según el navegador que se use
}
/*
manda una petición HTTP via ajax
recibe una función "callback" que se llamará en cuanto se
tenga respuesta. La función callback recibe como parámetro
al objeto HTTPRequest.
*/
peticionHttp(url, callBack)
{
// creamos el objeto HTTPRequest
request = createRequest();
// le asignamos el manejador de eventos
request.onreadystatechange = function()
{
// si todo está bien y muy bien...
if (request.readyState == 4 && request.status == 200)
{
// llamamos de vuelta
eval(callBack + '(request)');
}
}
// enviamos la petición
request.open('get', url, true);
request.send();
}
Código:
/*
ejemplo simplón de callback.
simplemente muestra la respuesta de la petición
*/
function procesaRespuesta(request)
{
alert(request.responseText);
}
/*
Lanzamos la petición
*/
peticionHttp('http://servidor/pagina.php', 'procesaRespuesta');
|
|
#2
|
||||
|
||||
|
Hola,
Gracias por responder Román. ![]() Cita:
![]() No puedo deciros cómo paso el parámetro de marras, porque, efectivamente, no he conseguido hacerlo, así que, de momento, hacemos las cosas no como querríamos, sino como nos es posible... Una cosa sí puedo decir, y es que tengo que hacer más pruebas y las haré, porque, ¿lo que tú has escrito arriba funciona? Haces uso de la función "eval" y pasas el objeto "XmlHttpRequest" como parámetro, pero, ¿comprobaste que funciona? Lo digo porque, eso, entre otras cosas, es lo que yo intenté, pero, es lo que digo arriba, que se recibe, aparentemente, el objeto pasado como parámetro, ¡pero sus propiedades son "undefined"! Así que, ¿probaste el código anterior o sólo intuyes que funcionará? En todo caso gracias por responder Román. Veo que acaso no exista otra forma de hacer esto que con "val", en JavaScript.... bueno. Como sea habría que apañarse. ![]() (*) En realidad no hay excusa que valga. ![]() Última edición por dec fecha: 23-08-2006 a las 23:07:07. |
|
#3
|
||||
|
||||
|
Cita:
Agrego: Justamente en la función "callback" de prueba usé request.responseText en lugar de simplemente request, para que no quedara duda. // Saludos Última edición por roman fecha: 23-08-2006 a las 23:10:22. |
|
#4
|
||||
|
||||
|
Hola,
Bueno... Pues entonces tendré que prestar atención y comprobarlo de nuevo. Voy a hacerlo esta vez fuera del proyecto, por separado, para ver si así las cosas se me presentan más claras. Dices que funciona... y te creo, ¡y a mí que me parecía hasta sintácticamente incorrecto! Por ejemplo, cuando haces esto: Código:
eval(callBack + '(request)'); ![]() Última edición por dec fecha: 23-08-2006 a las 23:24:26. |
|
#5
|
||||
|
||||
|
Eso similar que hiciste es difícil saber qué fue. En la declaración de la función PeticionHttp, ¿te has fijado como has declarado los parámetros?.
En cuanto a la sintaxis, callBack es una cadena, al igual que '(request)', así que el parámetro que se le pasa a eval es la cadena 'procesaRespuesta(request)' JS no es PHP, no hay- que yo sepa -evaluación de variables dentro de una cadena. Ahora, yo probé el código en IE y te aseguro que funciona. Por lo que dices, me he puesto a probar en FF y no funciona pero, bueno, en FF no funcionan muchas cosas. // Saludos |
|
#6
|
||||
|
||||
|
Hola,
¡Estupendo! ¡Comprobado y alucinado de su funcionamiento y posibilidades! ![]() Ahora bien, se ve que tengo que aprender sobre la función "eval" de JavaScript. Yo creo que aquí es donde estaba metiendo la pata, puesto que algo como lo que escribiste funciona: Código:
eval(callbackfunc+'(request)'); Código:
eval(callbackfunc+'('+request+')');
![]() PD. Lo probé en FireFox, por cierto. ![]() |
|
#7
|
||||
|
||||
|
Curioso, yo lo he hecho funcionar en FF pero sólo pasando null al método request.send().
Si tú haces callbackfunc + '(' + request + ')', eso sí que son churros con merinas (¿qué son merinas?): estás sumando cadenas de caracteres con objetos. Pero si esto te confunde, ¿qué tal si te digo que también funciona si pones: Código:
eval(callBack(request)); Código:
peticionHttp('http://servidor/pagina.php', procesaRespuesta);
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Crear Instancias a partir de un nombre | radaalvaro | .NET | 10 | 14-04-2009 23:22:32 |
| Partir un string | FunBit | Varios | 5 | 25-07-2005 17:58:32 |
| ejecutar PHP o javascript desde delphi | torito | Varios | 3 | 11-03-2005 17:48:37 |
| Conocer PrinterIndex a partir del nombre | Novás | Varios | 1 | 16-07-2004 18:26:14 |
| Ejecutar javascript en Intraweb | Brewster | Internet | 1 | 17-06-2004 22:55:38 |
|