2009-11-25 14 views
8

Tengo una etiqueta div que se llena con una secuencia de comandos a través de una llamada ajax, pero la secuencia de comandos no se ejecuta.Cargando etiquetas de script a través de AJAX

¿Hay alguna manera de hacer que se ejecute el script?

+0

hay ningún código disponible relacionada con esta pregunta? – miku

+0

pregunta muy vaga. código y ejemplos por favor. – mauris

+0

- volcado en el lado del cliente de etiqueta div. –

Respuesta

11

Si utiliza jQuery .html método que analiza la etiqueta de script y evals que:

$("div").html('<script type="text/javascript">alert("This should work")</script>'); 

Si jQuery no es una opción que podría escribir esto por sí mismo utilizando (1) una expresión regular, o (2) analizar el árbol DOM y encontrar etiquetas de script. (# 2 es la forma en que lo hace jQuery)

+0

jQuery necesita ser activado y si incluí esto en la carga útil que se envía de vuelta al cliente, no se ejecutará ya que el script descargado aja no se inicia. Excepción: puedo establecer la etiqueta diferir en el marcado del script y IE lo ejecutará, pero eso es solo x% de los usuarios. –

+0

@Caleb: ¿Qué hace el código en tu respuesta? – Ashwin

+0

Esta es también la razón por la cual las etiquetas de script dentro de las solicitudes AJAX no terminan en el lugar en el que se encuentran en el html de la respuesta. – Ikke

0

Si configura innerHtml of div, las etiquetas de script deberían ejecutarse. Estoy usando $ ("# divid"). Load() para cargar contenido dinámico y las etiquetas de script se ejecutan.

Pruebe usar JQuery si no funciona con javascript normal.

+0

Lamentablemente, ese no es el caso. La secuencia de comandos en la carga útil html de una carga útil entregada por Ajax al cliente no se ejecuta. –

3

Siempre es una buena idea separar el contenido del código. Cargue contenido a través de AJAX y código insertando etiquetas <script>. Si está utilizando jQuery, use $.getScript() para cargar scripts dinámicamente.

2

supongo, que está escribiendo etiqueta de secuencia de comandos en innerHtml directamente

esto no funcionará.

document.body.innerHTML+="<script>alert(1)</scr"+"ipt>"; 

usted tiene que escribir usando funciones DOM como esto

var tag = document.createElement("script"); 
tag.innerHTML="alert(1)"; 
document.body.appendChild(tag); //can be append to any object other than body 

o mejor utilización jQuery

+0

El problema es que el script se incluye en la carga útil de Ajax y se envía al cliente dentro del DIV. No puedo ejecutar el script una vez que llega al cliente, por lo que hay un problema con el huevo y la gallina. –

+0

Hola, en Ajax, ¿qué tipo de resultado? solo códigos javascript? o incluir una etiqueta de script? Si solo son códigos JavaScript, puede 'eval' o si incluye una etiqueta script, puede usar el ejemplo anterior en mi publicación y cambiar' document.body' con su etiqueta div, y anexar allí. – YOU

+0

y podría actualizar su publicación con más información, como su sitio web y más explicaciones? porque las personas lo notarán y también podrán descubrir su problema actual, rgds – YOU

Cuestiones relacionadas