JavaScript - Prototype

 
Vista:

Prototype

Publicado por Aritz (14 intervenciones) el 03/05/2007 15:53:54
Buenas tardes!
Estoy usando la librería Prototype y me gustaría saber si cuando usas las funciones Ajax hay alguna forma de mandar variables a la función a la que llamo para visualizar la información. Por ejemplo:

functon ejemplo(id)
{
var ajax;
ajax = new Ajax.Request( http://IP/pagina.php,
{
method: get,
parametros,
onComplete: visualizarRespuesta(originalRequest, id)
});
}

function visualizarRespuesta(originalRequest, id)
{
$(id).innerHTML = originalRequest.responseText;
}

Esto ya lo he probado y no funciona, recibo correctamente el originalRequest, pero elid está vacío. Además en la documentación no aparece (o no lo he entendido correctamente, está en inglés) nada respecto a este paso de variable...

Alguien sabe como solucionar esto?

Gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Prototype

Publicado por Gonzalo (107 intervenciones) el 03/05/2007 20:37:26
Realmente en el onComplete no le puedes poner una llamada como estás poniendo, sino que tienes que poner una función. Es decir:

onComplete: visualizarRespuesta
y no:
onComplete: visualizarRespuesta()

Aclarado eso, puedes solucionar tu problema de varias formas parecidas. Lo más sencillo es generando la función en el momento de hacer la llamada:

functon ejemplo(id) {
····var ajax;
····ajax = new Ajax.Request( http://IP/pagina.php, {
········method: get,
········parametros,
········onComplete: function(originalRequest) {
············$(id).innerHTML = originalRequest.responseText;
········}
····});
}


Esto te puede ayudar a entenderlo mejor, pero en realidad es prácticamente lo mismo:

functon ejemplo(id) {
····var ajax;
····ajax = new Ajax.Request( http://IP/pagina.php, {
········method: get,
········parametros,
········onComplete: function(originalRequest) {
············visualizarRespuesta(originalRequest,id);
········}
····});
}

function visualizarRespuesta(originalRequest, id) {
····$(id).innerHTML = originalRequest.responseText;
}

Lo importante es darse cuenta de que, en cualquier caso, lo que le pasas a onComplete es una función a la que llamará el objeto Ajax. Y que es el objeto Ajax el que llama a esa función. Ese objeto no puede saber si tu quieres que a tu función se le pasen 23 parámetros o 7. Así que el API de Prototype establece que a esa función lo único que se le pasa es el objeto de la petición, el originalRequest.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Prototype

Publicado por Aritz (14 intervenciones) el 04/05/2007 07:41:40
Gracias Gonzalo!

Ahora ya entiendo mejor al tema. Me pondré a cambiar el código a ver si lo resumo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar