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

Respuesta
 
Herramientas Desplegado
Antiguo 30-abr-2008, 04:22   #1 (permalink)
nebus ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Shadowbox y Ajax

Hola,

He estado viendo los otros mensajes referentes a problemas con javascript y ajax pero no tengo muy claro que mi problema tenga que ver con eso.

Mi caso consiste en una pagina, index.jsp, en la cual creo codigo dinamicamente con java en jsp's que cargo con ajax en un div.

El caso es que en una de estas jsp quiero mostrar unos detalles con shadowbox. Las librerias y estilos han sido añadidas en el index y funcionan correctamente en partes estaticas del mismo index. En el jsp dinamico creo un link (<a>) con el rel adecuado, exactamente igual que en las otras pruebas, pero en este caso no funciona...

A que puede ser debido? En otros jsp's creados dinamicamente hago uso de otras librerias js correctamente...y esta no se porque no.

Saludos y muchas gracias!
nebus está desconectado   Responder Citando
Antiguo 30-abr-2008, 08:02   #2 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.916
Re: Shadowbox y Ajax

Hola nebus,

Revisa este link: HOWTO: Ejecutar javascript que viene de ajax

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 02-may-2008, 01:22   #3 (permalink)
nebus ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Re: Shadowbox y Ajax

Hola,

Muchas gracias por tu respuesta. Ya lei ese articulo pero yo no quiero ejecutar codigo javascript directamente colocado en las paginas que cargo con ajax. En la pagina principal estan declaradas todas las librerias necesarias y en las paginas que cargo con ajax simplemente tengo algo como:

Código HTML:
<a href="mapa.htm" rel="shadowbox;width=500;height=400">
De todas formas voy a probar con esa solución porque estoy desesperado ya jeje.

Saludos y muchas gracias!
nebus está desconectado   Responder Citando
Antiguo 02-may-2008, 08:33   #4 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.916
Re: Shadowbox y Ajax

En otro post precisamente MoboraK comentaba que debías de re-llamar a Shadowbox.init() nuevamente en tus llamadas asíncronas para que la librería registre los nuevos links.

Prueba eso.

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 05-may-2008, 01:38   #5 (permalink)
nebus ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Re: Shadowbox y Ajax

Hola de nuevo,

Muchas gracias por la respuesta. He probado las dos soluciones que se proponen en el otro tema incluyendo una llamada al init de shadowbox en la pagina cargada con ajax y sigue sin funcionar

Alguna idea mas? Muchas gracias!
nebus está desconectado   Responder Citando
Antiguo 05-may-2008, 09:07   #6 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.916
Re: Shadowbox y Ajax

Hola nebus,

Leyendo un poco de Shadowbox, en tu función onreadystatechange, debes de llamar a Shadowbox.setup('id_de_tu_div') para volver a cargar los eventos de Shadowbox.

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 06-may-2008, 01:36   #7 (permalink)
nebus ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Re: Shadowbox y Ajax

Hola de nuevo,

Muchisimas gracias por tus respuestas y tu tiempo. He puesto la llamada al setup de shadowbox en mi funcion:

Código:
function FAjax (url,capa,valores,metodo)
{
          var ajax=creaAjax();
          var capaContenedora = document.getElementById(capa);

/*Creamos y ejecutamos la instancia si el metodo elegido es POST*/
if(metodo.toUpperCase()=='POST'){
         ajax.open ('POST', url, true);
         ajax.onreadystatechange = function() {
	         if (ajax.readyState==1) {
	         	capaContenedora.innerHTML="<p align='center'><font color='#336699' face='Verdana, Arial, Helvetica, sans-serif'>Cargando.......</font></p>";
	         }
	         else if (ajax.readyState==4){
			 	if(ajax.status==200){
		       		/*var scs=ajax.responseText.extractScript();    //capturamos los scripts
					document.getElementById(capa).innerHTML=ajax.responseText;    //eliminamos los scripts... ya son innecesarios
					scs.evalScript();       //ahora si, comenzamos a interpretar todo  */
	         		document.getElementById(capa).innerHTML=ajax.responseText;
	   			}
	   			else if(ajax.status==404){
		            capaContenedora.innerHTML = "La direccion no existe";
	            }
	    	    else{
	            	capaContenedora.innerHTML = "Error: ".ajax.status;
	            }
	         }
	         Shadowbox.setup(capa,{ width:640, height:480 });
  		 }
         ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
         
         ajax.send(valores);
         return;
}
Y ahora me da un error en prototype:

"element has no properties" en el fichero prototype.js linea 3796. Concretamente en esta parte del codigo de prototype.js

Código:
function getEventID(element) {
    if (element._eventID) return element._eventID;
    arguments.callee.id = arguments.callee.id || 1;
    return element._eventID = ++arguments.callee.id;
  }
Alguna idea, voy a seguir investigando.

Saludos!
nebus está desconectado   Responder Citando
Antiguo 06-may-2008, 04:05   #8 (permalink)
nebus ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Re: Shadowbox y Ajax

Bueno, pues por fin he conseguido que funcione, aunque ahora tengo otro problema.

La solución ha sido poner la llamada al setup en la función onreadystatechange, pero en vez de pasarle el nombre del div, pasarle un array con los enlaces que contiene ese div de esta manera:

Código:
Shadowbox.setup(document.getElementById(capa).getElementsByTagName('a'),{ width:640, height:480 });
Con eso basta para que funcione, pero mi nuevo problema creo que es un poco mas generico, ya que no me abre ninguna pagina JSP con shadowbox, da igual donde ponga el link, no abre paginas JSP. Voy a investigar un poco más este tema.

Muchas gracias!

Saludos!
nebus está desconectado   Responder Citando
Antiguo 06-may-2008, 08:16   #9 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.916
Re: Shadowbox y Ajax

Hola nebus,

Me da gusto saber que ya funciono correctamente. Tu segundo problema, checa bien que puedas abrir los JSP directamente (copiando y pegando la URL).

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 06-may-2008, 08:52   #10 (permalink)
nebus ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Re: Shadowbox y Ajax

Hola,

Los JSP funcionan bien, no se que puede pasar con este tipo de archivos... he solucionado este problema poniendo lo que queria en unos divs ocultos y mostrandolos con shadowbox.

Ahora el problema de mi solucion es que al parecer si le pasas una lista de links, 'a', los convierte todos, tengan o no el rel adecuado, para que abran una ventana de shadowbox y no quiero que todos los enlaces abran eso.

Por lo que ahora me las estoy ingeniando para hacer un script que me devuelva todos los links que tengan en el rel 'shadowbox'

Alguna sugerencia?

Muchisimas gracias!
nebus está desconectado   Responder Citando
Antiguo 06-may-2008, 11:35   #11 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.916
Re: Shadowbox y Ajax

A lo mejor lo que podrías hacer es agregarle un class que diferencie que es para el shadowbox, y usar prototype con la función $$.

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 28-ago-2008, 09:19   #12 (permalink)
neftons ha deshabilitado el karma
 
Fecha de Ingreso: junio-2008
Ubicación: Bogotá D.C. / Colombia
Mensajes: 2
Respuesta: Shadowbox y Ajax

Estuve leyendo el post y la verdad es que me ha sido de gran ayuda, gracias GatorV y nebus.

Código:
function cargarContenido(file){ 
	var contenedor = document.getElementById('informacion'); 
	ajax=nuevoAjax(); 
	ajax.open("GET", file, true); 
	ajax.onreadystatechange = function() { 
	if (ajax.readyState == 1) {
		var imagen = document.createElement("img");
		imagen.setAttribute("src","../images/loading.gif");
		contenedor.innerHTML="";
		contenedor.appendChild(imagen);
	}
	else if (ajax.readyState == 4) {
		contenedor.innerHTML = ajax.responseText;
	} 
	Shadowbox.setup(contenedor.getElementsByTagName('a'));
	};
	
	ajax.send(null);
}
neftons 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 06:56.


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