Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks JS (http://www.forosdelweb.com/f127/)
-   -   HOWTO: Ejecutar javascript que viene de ajax (http://www.forosdelweb.com/f127/howto-ejecutar-javascript-que-viene-ajax-510438/)

MaBoRaK 04/03/2008 14:12

Re: HOWTO: Ejecutar javascript que viene de ajax
 
loading...........

Excelente :D

http://sflogo.sourceforge.net/sflogo...724&type=5
Sería bueno ponerlo en las FAQ

connection closed.

tonqac 08/03/2008 12:50

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???

MaBoRaK 10/03/2008 12:23

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.

quinqui 18/03/2008 08:22

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 ó_ò

titogelo 24/03/2008 15:41

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

GatorV 24/03/2008 15:43

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.

lalogrosz 21/04/2008 08:48

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!

MaBoRaK 21/04/2008 08:58

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.

lalogrosz 21/04/2008 09:11

Re: HOWTO: Ejecutar javascript que viene de ajax
 
Cita:

Iniciado por MaBoRaK (Mensaje 2372520)
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.

MaBoRaK 21/04/2008 09:21

Re: HOWTO: Ejecutar javascript que viene de ajax
 
loading...........

Leiste la documentación de Prototype?

connection closed.

nebus 05/05/2008 01:49

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!!

Panino5001 16/05/2008 12:34

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>


ronin 26/06/2008 16:37

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.

GatorV 27/06/2008 08:50

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.


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

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.