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

Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Response

Estas en el tema de Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Response en el foro de Frameworks JS en Foros del Web. Estimados: Referente al tema en cuestión he encontrado algunos post e info, pero no logro resolver la problematica. Tengo 2 páginas. PAGINA1: Es la principal, ...
  #1 (permalink)  
Antiguo 01/04/2008, 21:58
Avatar de vansert  
Fecha de Ingreso: abril-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Response

Estimados:

Referente al tema en cuestión he encontrado algunos post e info, pero no logro resolver la problematica.

Tengo 2 páginas.

PAGINA1: Es la principal, tiene 3 radio buttons que indican los 3 tipos de cuentas. Al hacer click en alguno de estos, llama a un funcion que ejecuta Ajax, abre pagina 2 y recibe el response de pagina 2 y lo tira a una capa "respuesta".

PAGINA2: Esta pagina recibe el tipo de cuenta seleccionado, hace la consulta a la DB y lista la consulta con los registros editables. Para hacerlos editables uso en PAGINA2 librerias prototype y scriptaculous, que hacen los campos del registros editables, y si la pagina la pruebo sola, actualiza en la DB, osea se hace bien el update.


Todo esto funciona bien, es una funcionalidad super buena....
PERO...
PROBLEMA:
La PAGINA2 tiene tag <scripts> SRC que abren el prototype y scriptaculous. Además tiene código Javascript adicional para hacer las celadas editables. Estos 2 códigos Javascript no se logran ejecutar en el navegador como código JavaScript :(
Conceptualmente entiendo porque no funciona....pero se de que hay funciones creadas y de programadores que lo han logrado realizar. Hasta el momento lo he intentado pero no lo logro resolver.
Que rabia! el código lo obtengo con el responseText ...solo falta que se ejecute!!! :S


Por Favor una ayuda, cualquier aporte se les agradece...

Saludos!
  #2 (permalink)  
Antiguo 02/04/2008, 06:44
Avatar de vansert  
Fecha de Ingreso: abril-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Resp

Hola!

Please alguien me pueda ayudar...estoy algo complicado...
Quiero ejecutar los JS obtenidos del response...

graxias!!
  #3 (permalink)  
Antiguo 02/04/2008, 09:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Resp

Hola Vansert,

Revisa este link: http://www.forosdelweb.com/f77/howto...e-ajax-510438/

Saludos.
  #4 (permalink)  
Antiguo 02/04/2008, 11:24
Avatar de vansert  
Fecha de Ingreso: abril-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Resp

Hola GatorV

Ese post ya lo revise ayer y me funciono bastante bien.
Lo que no logro aun es poder ejecutar el código de los <scripts> embebidos. Y es fundamental que logre incluir scriptaculous y prototype ya que estoy haciendo una grilla editable (y funciona bien esta pagian sola) . Necesito resolver esto :(

Gracias y saludos!

Los embebidos:
Código:
<script type="text/javascript" src="librerias/scriptaculous/prototype.js"></script>
<script type="text/javascript" src="librerias/scriptaculous/scriptaculous.js"></script>
Siguiendo la linea del post q me recomendaste uso el script creado por MaBoRaK:

Código:
<script>
var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
        /**
        * Eval script fragment
        * @return String
        */
        String.prototype.evalScript = function()
        {
                return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
        };
        /**
        * strip script fragment
        * @return String
        */
        String.prototype.stripScript = function()
        {
                return this.replace(new RegExp(tagScript, 'img'), '');
        };
        /**
        * extract script fragment
        * @return String
        */
        String.prototype.extractScript = function()
        {
                var matchAll = new RegExp(tagScript, 'img');
                return (this.match(matchAll) || []);
        };
        /**
        * Eval scripts
        * @return String
        */
        Array.prototype.evalScript = function(extracted)
        {
                var s=this.map(function(sr){
                         var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
                         
						 if(window.execScript){
	                        	alert(sc);
                              	//window.document.execScript(sc);
                              	window.execScript(sc);
								//self.parent.document.execScript(sc);
					
						 }
                        else
                       {
						//setTimeout(((sr.match(new RegExp(sc, 'im')) || ['', ''])[1]),0);});	

                           window.setTimeout(sc,0);
                        }
                });
                return true;
        };
        /**
        * Map array elements
        * @param {Function} fun
        * @return Function
        */
        Array.prototype.map = function(fun)
        {
                if(typeof fun!=="function"){return false;}
                var i = 0, l = this.length;
                for(i=0;i<l;i++)
                {
                        fun(this[i]);
                }
                return true;
        };  
</script>
  #5 (permalink)  
Antiguo 02/04/2008, 11:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Resp

En el post de Maborak propone usar por ejemplo:
Código:
element.innerHTML = ajax.responseText.stripScripts();
Eso hace que los tags de <script src="archivo.js"></script> desaparezcan, así que lo que debes de hacer es algo así:
Código:
var script = ajax.responseText.extractScript();
element.innerHTML = ajax.responseText;
script.evalScript();
Saludos.
  #6 (permalink)  
Antiguo 02/04/2008, 11:41
Avatar de vansert  
Fecha de Ingreso: abril-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Resp

Actualmente lo estoy realizando asi, segui la indicacion del post.
Pero no se abren los scripts .js :(
Llevo harto rato pegado en esto...he realizado todos los seguimientos y no doy con la solución.

Este es mi código JS para interactuar con Ajax:

Código:
	 	AjaxOBJ.open("POST", "PresupuestoInicial_buscarTipoCuentas.php", true);
	    AjaxOBJ.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

		AjaxOBJ.onreadystatechange=function() {
				
				if (AjaxOBJ.readyState==4) {

					if (AjaxOBJ.status==200){
						
						var scs = AjaxOBJ.responseText.extractScript();
						document.getElementById("cuentas_listado").innerHTML = AjaxOBJ.responseText;
						scs.evalScript();
					} 
				}
		}

		AjaxOBJ.send("tipo_cuenta_seleccionado="+ tipo_cuenta_seleccionado);
Saludos
  #7 (permalink)  
Antiguo 02/04/2008, 11:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Resp

Mmm es raro, te debería de funcionar, otra propuesta es que incluyas las librerías de prototype.js y scriptaculous.js en tu pagina principal, así se evaluarían correctamente.

Saludos.
  #8 (permalink)  
Antiguo 02/04/2008, 11:53
Avatar de vansert  
Fecha de Ingreso: abril-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Resp

Mmmm yo tambien estoy asi, como q no se q onda con esto.
Talvez es una sentencia o algo por ahi....q raro

En fin, voy a probar con ese consejo, es algo simple pero no lo habia considerado.
Te cuento como me fue.

Saludos,
  #9 (permalink)  
Antiguo 02/04/2008, 12:09
Avatar de vansert  
Fecha de Ingreso: abril-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
De acuerdo Re: Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Resp

GatorV:

Mmmm suponía que tarde o temprano iba a pasar algo asi .
Para que veas, tu consejo resolvió mi problema.

Incluí los scripts
Cita:
prototype.js y scriptaculous.js
en la página padre y ningún problema.
Puede ser porque estas librerias son con harto codigo... o talvez no. Pero la solución para que lo tengan en cuenta fue incluir los código embebidos en la página padre.

Me concentré mucho en buscar una solución compleja.... y el camino era otro..y ni siquiera solución, simplemente cambiar código de nivel.

Asi que gracias por la iluminación

Saludos y Gracias!!!
Vansert.
  #10 (permalink)  
Antiguo 02/04/2008, 12:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Resp

Me alegra que tu problema este resuelto.

Saludos.
  #11 (permalink)  
Antiguo 03/04/2008, 12:50
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: Cómo ejecutar Cód. JS y abrir los <scripts SRC> d una pag. obtenida con Ajax Resp

loading..........

Pues si.. es raro que no se evaluen los archivos js.....
pero mira, puedes crear un archivo js que solo tenga un

Cita:
alert('me vez porque me ejecuté')
si sale el alert entonces se estan evaluando los archivos js... y si no.. pues no.

connection closed.
__________________

Maborak Technologies
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:13.