Foros del Web » Programando para Internet » Javascript » Frameworks JS »

HOWTO: Ejecutar javascript que viene de ajax

Estas en el tema de HOWTO: Ejecutar javascript que viene de ajax en el foro de Frameworks JS en Foros del Web. loading........... Excelente :D Sería bueno ponerlo en las FAQ connection closed....

  #31 (permalink)  
Antiguo 04/03/2008, 13:12
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 15 años, 2 meses
Puntos: 35
Re: HOWTO: Ejecutar javascript que viene de ajax

loading...........

Excelente :D


Sería bueno ponerlo en las FAQ

connection closed.
__________________

Maborak Technologies
  #32 (permalink)  
Antiguo 08/03/2008, 11:50
 
Fecha de Ingreso: junio-2005
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Re: HOWTO: Ejecutar javascript que viene de ajax

acabo de descubrir que este codigo no funciona bien en Mozilla!!

cuando quiero recuperar los datos en otra pagina a traves de un request.form no reconoce los datos que cargue desde el ajax!!!!!

alguien sabe como solucionarlo???
  #33 (permalink)  
Antiguo 10/03/2008, 12:23
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 15 años, 2 meses
Puntos: 35
Re: HOWTO: Ejecutar javascript que viene de ajax

loading.............

Puedes poner la URL donde la usas? o bien... especificar mejor el problema. No te entendí.

connection closed.
__________________

Maborak Technologies
  #34 (permalink)  
Antiguo 18/03/2008, 08:22
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 13 años, 11 meses
Puntos: 56
Re: HOWTO: Ejecutar javascript que viene de ajax

Holas!

Gracias por este aporte, me he leído todo el tema, e intentado aplicar las soluciones dadas en mi propio script, mas no me han funcionado. La razón, claro, es porque todavía soy novata en el uso de AJAX, así que por eso les pido consejo.

Rápidamente les contaré que el script que estoy usando lo heredé de un compañero de trabajo, por lo que sólo copié y usé, pero sin entender mucho, el caso es que funcionó todo bien, hasta que me tocó ver que el código JS inserto en la respuesta Ajax no se ejecutaba.

Gracias a ustedes me entero que esto es "normal", y bueno mi caso es que el código Ajax que tengo es algo así:

Código HTML:
	var ajx = Ext.get("miDiv");
	ajx.load({
	    url: 'script.php',
	    method: 'POST',
	    params: Ext.lib.Ajax.serializeForm('miForm'),
	    text: "<img src=../images/loading.gif> Consultando Informacion Remota..."
	});
	ajx.show();
	ajx.highlight();
¿Es esto una librería de Ajax? Si es así, cómo puedo aplicar la solución que ustedes dieron, sobre este código mío?

Desde ya muchísimas gracias ó_ò
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #35 (permalink)  
Antiguo 24/03/2008, 15:41
 
Fecha de Ingreso: enero-2008
Mensajes: 35
Antigüedad: 10 años, 6 meses
Puntos: 1
Re: HOWTO: Ejecutar javascript que viene de ajax

Hola

no entiendo nada me han borrado las dudas que tenia yo aki? no entiendo xk, pero bueno

Taluego y MUXAS GRACIAS
  #36 (permalink)  
Antiguo 24/03/2008, 15:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 12 años, 1 mes
Puntos: 2126
Re: HOWTO: Ejecutar javascript que viene de ajax

Hola titogelo,

Tus dudas fueron movidas a un tema nuevo: http://www.forosdelweb.com/f77/probl...e-ajax-568812/

Saludos.
  #37 (permalink)  
Antiguo 21/04/2008, 08:48
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 16 años, 1 mes
Puntos: 6
Re: HOWTO: Ejecutar javascript que viene de ajax

Hola, yo utilizo el framework de prototype para realizar estas cosas, indicandole la opcion evalScripts: true

Funciona perfecto cuando me trae codigo para pegar en el html.
El problema esta cuando quiero pegar un script con un src...ejemplo, un gadget de google:

Código:
<script src="http://gmodules.com/ig/ifr?url=http://www.canbuffi.de/gadgets/clock/clock.xml&amp;up_title=Clock%20%26%20Date&amp;up_time_format=0&amp;up_seconds=1&amp;up_date_format=1&amp;up_dayofweek=1&amp;up_gmtoffset=-3&amp;up_daylight=0&amp;synd=open&amp;w=320&amp;h=120&amp;title=__UP_title__+(GMT__UP_gmtoffset__)&amp;lang=en&amp;country=ALL&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>
No me parsea el contenido de eso y quiero mostrarlo unicamente por ajax.
Alguna solucion?

Gracias!
__________________
"Vivir....solo cuesta Vida"
  #38 (permalink)  
Antiguo 21/04/2008, 08:58
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 15 años, 2 meses
Puntos: 35
Re: HOWTO: Ejecutar javascript que viene de ajax

loading...........


Tienes la URL donde estes usando este script? La estas usando como la opcion A o la opcion B ?


connection closed.
__________________

Maborak Technologies
  #39 (permalink)  
Antiguo 21/04/2008, 09:11
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 16 años, 1 mes
Puntos: 6
Re: HOWTO: Ejecutar javascript que viene de ajax

Cita:
Iniciado por MaBoRaK Ver Mensaje
loading...........


Tienes la URL donde estes usando este script? La estas usando como la opcion A o la opcion B ?


connection closed.
No, no lo tengo online, es local por ahora.
Pero el ejemplo es sencillo. La idea es ejecutar script de un src.
Solo quiero saber si se puede hacer eso con Prototype y de que forma

Gracias.
__________________
"Vivir....solo cuesta Vida"
  #40 (permalink)  
Antiguo 21/04/2008, 09:21
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 15 años, 2 meses
Puntos: 35
Re: HOWTO: Ejecutar javascript que viene de ajax

loading...........

Leiste la documentación de Prototype?

connection closed.
__________________

Maborak Technologies
  #41 (permalink)  
Antiguo 05/05/2008, 01:49
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Antigüedad: 10 años, 2 meses
Puntos: 0
Re: HOWTO: Ejecutar javascript que viene de ajax

Hola a todos.

Estoy intentando aplicar estas funciones a mi código, ya que tengo un problema que describo en otro tema en este foro(No pongo el link porque el sistema antispam no me deja).

El problema viene a raiz de querer usar shadowbox en paginas cargadas con Ajax. Shadowbox funciona perfectamente en la pagina raiz pero en las paginas cargadas no. He probado a incluir la llamada a shadowbox.init() en la pagina en la que quiero usar shadowbox que cargo por ajax y sigue sin funcionar.

Alguna idea? muchas gracias!!
  #42 (permalink)  
Antiguo 16/05/2008, 12:34
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.063
Antigüedad: 14 años, 1 mes
Puntos: 775
Respuesta: HOWTO: Ejecutar javascript que viene de ajax

Antes, cuando tenía que evaluar código javascript incluído en un responseText, lo hacía de esta manera:
Código:
<script>
function SetContainerHTML(id_contenedor,responseText)
{
mydiv = document.getElementById(id_contenedor);
mydiv.innerHTML = responseText;
var elementos = mydiv.getElementsByTagName('script');
for(i=0;i<elementos.length;i++) {
var elemento = elementos[i];
nuevoScript = document.createElement('script');
nuevoScript.text = elemento.innerHTML;
nuevoScript.type = 'text/javascript';
if(elemento.src!=null && elemento.src.length>0)
{nuevoScript.src = elemento.src;}
elemento.parentNode.replaceChild(nuevoScript,elemento);
}
}

</script>
Pero al parecer, Explorer 7 ya no incluye los tags script dentro de la propiedad innerHTML, por lo cual, esa técnica ya no funciona, a menos que reemplacemos los tags scripts por otros y volvamos luego a recrearlos.
Así que me decanté por la opción de las regExp, como la sugerida por MaBoRaK, en la cual se fundamenta toda la idea, pero con algunas diferencias: usando un único prototype para realizar todo el proceso, ya sea para extraer scripts internos y/o externos, e incluyéndos con DOM, en lugar de evaluarlos.
El código utilizado para esto es el siguiente:
Código:
String.prototype.tratarResponseText=function(){
	var pat=/<script[^>]*>([\S\s]*?)<\/script[^>]*>/ig;
	var pat2=/\b\s+src=[^>\s]+\b/g;
	var elementos = this.match(pat) || [];
	for(i=0;i<elementos.length;i++) {
		var nuevoScript = document.createElement('script');
		nuevoScript.type = 'text/javascript';
		var tienesrc=elementos[i].match(pat2) || [];
		if(tienesrc.length){
			nuevoScript.src=tienesrc[0].split("'").join('').split('"').join('').split('src=').join('').split(' ').join('');
		}else{
			var elemento = elementos[i].replace(pat,'$1','');
			nuevoScript.text = elemento;
		}
		document.getElementsByTagName('body')[0].appendChild(nuevoScript);
	}
	return this.replace(pat,'');
}
Y un ejemplo de uso sería este:
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<script>
function $(id){return document.getElementById(id);}
function http(){
	if(window.XMLHttpRequest){
		return new XMLHttpRequest();	
	}else{
		try{
			return new ActiveXObject('Microsoft.XMLHTTP');
		}catch(e){
			alert('nop');
        	return false;
		}	
	}
}
String.prototype.tratarResponseText=function(){
	var pat=/<script[^>]*>([\S\s]*?)<\/script[^>]*>/ig;
	var pat2=/\b\s+src=[^>\s]+\b/g;
	var elementos = this.match(pat) || [];
	for(i=0;i<elementos.length;i++) {
		var nuevoScript = document.createElement('script');
		nuevoScript.type = 'text/javascript';
		var tienesrc=elementos[i].match(pat2) || [];
		if(tienesrc.length){
			nuevoScript.src=tienesrc[0].split("'").join('').split('"').join('').split('src=').join('').split(' ').join('');
		}else{
			var elemento = elementos[i].replace(pat,'$1','');
			nuevoScript.text = elemento;
		}
		document.getElementsByTagName('body')[0].appendChild(nuevoScript);
	}
	return this.replace(pat,'');
}

function SetContainerHTML(id_contenedor,responseText){
	var mydiv = $(id_contenedor);
	mydiv.innerHTML = responseText.tratarResponseText();
}
function cargarPagina(url,contenedorId){
var H=new http();
H.open('get',url+'?'+Math.random(),true);
H.onreadystatechange=function(){
	if(H.readyState==4){
		SetContainerHTML(contenedorId,H.responseText);
		H.onreadystatechange=null;
	}else{
		$(contenedorId).innerHTML='cargando...';
	}
}
H.send(null);
}
window.onload=function(){
	cargarPagina('pagina2.php','pp');
}
</script>  
</head>

<body>
<div id="pp"></div>
</body>
</html>

Última edición por Panino5001; 16/05/2008 a las 13:07
  #43 (permalink)  
Antiguo 26/06/2008, 16:37
 
Fecha de Ingreso: julio-2006
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Respuesta: HOWTO: Ejecutar javascript que viene de ajax

Hola, tengo una duda, puede que sea media tonta. Si uso prototype como puede usar tu función. No se si alguien me podria ayudar.
  #44 (permalink)  
Antiguo 27/06/2008, 08:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 12 años, 1 mes
Puntos: 2126
Respuesta: HOWTO: Ejecutar javascript que viene de ajax

Hola ronin,

Si usas prototype solo tienes que pasar el parámetro de evalScripts: true, para que los ejecute, no es necesario usar esto.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 4 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 22:06.