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

Cargar script en div q viene d ajax

Estas en el tema de Cargar script en div q viene d ajax en el foro de Frameworks JS en Foros del Web. Hola a tod@s. He estado mirando soluciones dentro mismo d estos foros y la verdad es q son demasiado complejas quizás para lo q necesito. ...
  #1 (permalink)  
Antiguo 11/04/2010, 20:11
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años, 8 meses
Puntos: 1
Cargar script en div q viene d ajax

Hola a tod@s.

He estado mirando soluciones dentro mismo d estos foros y la verdad es q son demasiado complejas quizás para lo q necesito.

El caso es q tengo una página index q realiza una llamada a ajax (engine.php) y m devuelve los valores dentro del div "centro" d la página index.

Ya he leído bastante acerca d cargar javascript en casos así, pero lo curioso es q consigo hacer q cargue scripts SI ESTÁN DENTRO D UN A HREF!!! ¿por qué?

Imaginen la pág engine.php (en realidad va a otra pág dependiendo d los valores q devuelve la llamada a ajax, pero es un simple "switch" q lleva a un "include"). Esto es indiferente xq puede pasar a 10 páginas q ninguna va a cargar scripts, a menos q lo haga así, por ejemplo:

<?php
$x = "Variable uno";
echo $x."<a href='javascript: alert(\"".$x."\");'>Mostrar variable</a>"; ?>

Esto lo pongo en la pág engine.php y pulsando sobre el enlace m carga el javascript...
¿cómo puedo hacer para q el "a href" lo haga d manera automática sin tener q pulsar sobre él??

Muchísimas gracias d antemano y siento volver a mencionar este tema tan recurrente sobre ajax y javascript.
  #2 (permalink)  
Antiguo 12/04/2010, 05:27
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Cargar script en div q viene d ajax

Hola

¿Y usando la función eval()?

Código PHP:
Ver original
  1. <?php
  2. $x = "Variable uno";
  3. $com = 'alert (\"".$x."\");';
  4. echo eval($com);
  5. ?>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 12/04/2010, 09:19
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Cargar script en div q viene d ajax

Hola Adler;
muchísimas gracias por tu interés ,pero no funciona

Me da el siguiente error:
Parse error: syntax error, unexpected $end in C:\wamp\www\prueba.php(36) : eval()'d code on line 1

La pág es prueba.php (creo q esto ya lo suponías viendo el error), y no viene d la consulta a ajax., sino q es un fallo d eval (la verdad es q a mi m cuesta bastante concatenar correctamente esta función)

Lo más cerca q he estado d solucionar el problema es poner en el "a href" un evento "onMouseMove", pero es muy "cutre" xq dependo d q muevan el ratón para q m realice el vínculo.

Gracias nuevamente x tu interés, un saludo
  #4 (permalink)  
Antiguo 12/04/2010, 18:04
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Cargar script en div q viene d ajax

¿Alguien podría aportar alguna idea más, por favor?
  #5 (permalink)  
Antiguo 14/04/2010, 06:18
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Cargar script en div q viene d ajax

Hola

Y hacer lo al revés. Me explico

La respuesta
Código PHP:
Ver original
  1. <?php
  2. $x = "Variable uno";
  3. $com = 'alert (\"".$x."\");';
  4. echo $com;
  5. ?>

y al recibir la respuesta usas eval()

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 15/04/2010, 10:18
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Cargar script en div q viene d ajax

Gracias nuevamente Adler, pero sigue sin funcionarme.
No sé si hago mal el eval o es q tras recibir la llamada a ajax d ninguna manera m carga el script.

He intentado seguir el post de esta misma web:
http://www.forosdelweb.com/f77/howto...e-ajax-510438/
Pero no consigo hacer q funcione, se ve q soy demasiado torpe como para entenderlo

Gracias nuevamente x tu interés, Un saludo
  #7 (permalink)  
Antiguo 16/04/2010, 07:13
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Cargar script en div q viene d ajax

Hola

Es justamente lo que te hubiera recomendado desde el principio, pero como dijiste

Cita:
He estado mirando soluciones dentro mismo d estos foros y la verdad es q son demasiado complejas quizás para lo q necesito.
pues ...

Pero la segunda opción que te di, ha de funcionar. En la respuesta haces algo como esto

Código Javascript:
Ver original
  1. var alerta = ajax.responseText;
  2. eval(alerta);

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 27/04/2010, 20:46
Avatar de ilen  
Fecha de Ingreso: febrero-2009
Mensajes: 125
Antigüedad: 15 años, 9 meses
Puntos: 2
Exclamación Respuesta: Cargar script en div q viene d ajax

No puedo cargar un javascript de una pagina trraida con ajax, nadie puede poner una solucion definitiva a estoo?????

el var scs=ajax.responseText.extractScript(); //capturamos los scripts

el navegador dice que extractScript(); no esta definido... ayudennnnnnn

Última edición por ilen; 27/04/2010 a las 22:06
  #9 (permalink)  
Antiguo 28/04/2010, 06:09
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Cargar script en div q viene d ajax

Hola

Prueba así

leerjsdesdeajax.js

Código Javascript:
Ver original
  1. var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
  2. /**
  3. * Eval script fragment
  4. * @return String
  5. */
  6. String.prototype.evalScript = function()
  7. {
  8.         return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
  9. };
  10. /**
  11. * strip script fragment
  12. * @return String
  13. */
  14. String.prototype.stripScript = function()
  15. {
  16.         return this.replace(new RegExp(tagScript, 'img'), '');
  17. };
  18. /**
  19. * extract script fragment
  20. * @return String
  21. */
  22. String.prototype.extractScript = function()
  23. {
  24.         var matchAll = new RegExp(tagScript, 'img');
  25.         return (this.match(matchAll) || []);
  26. };
  27. /**
  28. * Eval scripts
  29. * @return String
  30. */
  31. Array.prototype.evalScript = function(extracted)
  32. {
  33.                 var s=this.map(function(sr){
  34.                 var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
  35.                 if(window.execScript){
  36.                 window.execScript(sc);
  37.                 }
  38.                 else
  39.                 {
  40.                  window.setTimeout(sc,0);
  41.                 }
  42.                 });
  43.                 return true;
  44. };
  45. /**
  46. * Map array elements
  47. * @param {Function} fun
  48. * @return Function
  49. */
  50. Array.prototype.map = function(fun)
  51. {
  52.         if(typeof fun!=="function"){return false;}
  53.         var i = 0, l = this.length;
  54.         for(i=0;i<l;i++)
  55.         {
  56.                 fun(this[i]);
  57.         }
  58.         return true;
  59. };

el en html,php,asp...

Código Javascript:
Ver original
  1. <script type="text/javascript" src="./leerjsdesdeajax.js"></script>
  2.  
  3. .....
  4.  
  5. var scs=ajax.responseText.extractScript();
  6. obj.innerHTML = ajax.responseText.stripScript();
  7. scs.evalScript();

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 28/04/2010, 08:36
 
Fecha de Ingreso: mayo-2009
Mensajes: 64
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Cargar script en div q viene d ajax

el archivo leerjsdesdeajax.js hay que ponerlo en el encabezado la pagina que se carga con ajax??? en mi caso tengo un menu y segun la opcion cargo la pagina correspondiente, lo tendria que poner en la pagina que tiene el menu y el div donde cargo paginas o en las paginas cargadas???? e
esstoy mirando el post que ha puesto adler.
Si uso este archivo no me carga las paginas, aqui os pongo el trozo donde cargo la pagina para ver si me podeis ayudar:
function cargar_pag(pagina)
{
var conexion;
conexion = crearXMLHttpRequest();
conexion.onreadystatechange = function()
{
if (conexion.readyState == 4)
if (conexion.status == 200)
{
var ssc = conexion.responseText.extractScript();
document.getElementById('content').innerHTML = conexion.responseText;
ssc.evalScript();
}
}
conexion.open("POST", pagina, true);
conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
conexion.send(null);
}

el archivo js lo pongo en la pagina del menu y he probado tambien en la pagina que cargo.

Última edición por monsa; 28/04/2010 a las 09:02
  #11 (permalink)  
Antiguo 28/04/2010, 17:37
Avatar de ilen  
Fecha de Ingreso: febrero-2009
Mensajes: 125
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Cargar script en div q viene d ajax

Cita:
Iniciado por Adler Ver Mensaje
Hola

Prueba así

leerjsdesdeajax.js

Código Javascript:
Ver original
  1. var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
  2. /**
  3. * Eval script fragment
  4. * @return String
  5. */
  6. String.prototype.evalScript = function()
  7. {
  8.         return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
  9. };
  10. /**
  11. * strip script fragment
  12. * @return String
  13. */
  14. String.prototype.stripScript = function()
  15. {
  16.         return this.replace(new RegExp(tagScript, 'img'), '');
  17. };
  18. /**
  19. * extract script fragment
  20. * @return String
  21. */
  22. String.prototype.extractScript = function()
  23. {
  24.         var matchAll = new RegExp(tagScript, 'img');
  25.         return (this.match(matchAll) || []);
  26. };
  27. /**
  28. * Eval scripts
  29. * @return String
  30. */
  31. Array.prototype.evalScript = function(extracted)
  32. {
  33.                 var s=this.map(function(sr){
  34.                 var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
  35.                 if(window.execScript){
  36.                 window.execScript(sc);
  37.                 }
  38.                 else
  39.                 {
  40.                  window.setTimeout(sc,0);
  41.                 }
  42.                 });
  43.                 return true;
  44. };
  45. /**
  46. * Map array elements
  47. * @param {Function} fun
  48. * @return Function
  49. */
  50. Array.prototype.map = function(fun)
  51. {
  52.         if(typeof fun!=="function"){return false;}
  53.         var i = 0, l = this.length;
  54.         for(i=0;i<l;i++)
  55.         {
  56.                 fun(this[i]);
  57.         }
  58.         return true;
  59. };

el en html,php,asp...

Código Javascript:
Ver original
  1. <script type="text/javascript" src="./leerjsdesdeajax.js"></script>
  2.  
  3. .....
  4.  
  5. var scs=ajax.responseText.extractScript();
  6. obj.innerHTML = ajax.responseText.stripScript();
  7. scs.evalScript();

Suerte

Hay que usar librerias Prototype para que funciones esto?????
  #12 (permalink)  
Antiguo 29/04/2010, 01:00
 
Fecha de Ingreso: mayo-2009
Mensajes: 64
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Cargar script en div q viene d ajax

Gracias, es que en el post habian quitado .stripScript();
Pero de momento no veo que ejecute java. Voy a mirarlo bien.
La llamada al fichero la hago en la pagina principal y ya? o tambien donde tengo la function cargar_pagina()???? lo ponga o no no me ejecuta javascript.

<script type="text/javascript" src="js/jquery-1.3.2.min.js" language=javascript>
function cargar()
{alert("hola");
$('#nuevo').css('display','none');
document.getElementById('nuevo').style.display = 'none';
$('#nuevo').hide();
}
</script>

<body onload="cargar()";

y no hace ni alert ni nada.

En el explorer no me funciona nada me carga la pagina invocada pero no ejecuta javascript

Última edición por monsa; 29/04/2010 a las 03:48
  #13 (permalink)  
Antiguo 29/04/2010, 07:13
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Cargar script en div q viene d ajax

Hola

Cita:
Iniciado por ilen Ver Mensaje
Hay que usar librerias Prototype para que funciones esto?????
No hay por que usar ninguna librería

Cita:
Iniciado por monsa Ver Mensaje
Gracias, es que en el post habian quitado .stripScript();
Pero de momento no veo que ejecute java. Voy a mirarlo bien.
La llamada al fichero la hago en la pagina principal y ya? o tambien donde tengo la function cargar_pagina()???? lo ponga o no no me ejecuta javascript.
Puede que este entrando en conflicto con la librería jquery

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #14 (permalink)  
Antiguo 29/04/2010, 09:17
 
Fecha de Ingreso: mayo-2009
Mensajes: 64
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Cargar script en div q viene d ajax

Cita:
Iniciado por Adler Ver Mensaje
Hola



No hay por que usar ninguna librería



Puede que este entrando en conflicto con la librería jquery

Suerte
y que puedo hacer????quito el enlace a jquery de la pagina principal y las pongo donde use jquery?
  #15 (permalink)  
Antiguo 30/04/2010, 05:19
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Cargar script en div q viene d ajax

Hola

Cita:
Iniciado por monsa Ver Mensaje
y que puedo hacer????quito el enlace a jquery de la pagina principal y las pongo donde use jquery?
En el caso en que funcione sin cargar la librería, pues sí. Por otro lado, no cargues código que no vas a usar, es una perdida de recursos y ralentiza el tiempo de carga la página

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #16 (permalink)  
Antiguo 01/05/2010, 05:02
 
Fecha de Ingreso: mayo-2009
Mensajes: 64
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Cargar script en div q viene d ajax

Si en vez de usar jquery, que de momento lo uso para cargar paginas($("#blanco").load("pagina.php")), uso prototype no habria confilcto?
Esque en las paginas que use jquery no me iria javascript por el conflicto
Muchas gracias
  #17 (permalink)  
Antiguo 01/05/2010, 05:23
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Cargar script en div q viene d ajax

Hola

Cita:
Iniciado por monsa Ver Mensaje
Si en vez de usar jquery, que de momento lo uso para cargar paginas($("#blanco").load("pagina.php")), uso prototype no habria confilcto?
Esque en las paginas que use jquery no me iria javascript por el conflicto
Muchas gracias
No lo sé. Es solo cuestión de ensayo, error

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #18 (permalink)  
Antiguo 02/05/2010, 10:00
 
Fecha de Ingreso: mayo-2009
Mensajes: 64
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Cargar script en div q viene d ajax

la funcion load de jquery a cual de prototype corresponde????
quiero hacer esto en prototype:<script type="text/javascript"> load("pagina.php");<script>
  #19 (permalink)  
Antiguo 02/05/2010, 12:52
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Cargar script en div q viene d ajax

Hola

Cita:
Iniciado por monsa Ver Mensaje
la funcion load de jquery a cual de prototype corresponde????
quiero hacer esto en prototype:<script type="text/javascript"> load("pagina.php");<script>
Esta pregunta sería mejor que la realizaras en el foro de frameworks javascript

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Etiquetas: ajax
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 16:03.