2012-07-20 12 views
10

No sé que esto puede ser duplicado, pero,ajax cargado y el guión

utilizo ajax en mi página web, ahora en respuesta a esa llamada i enviar algo de HTML y script.

Luego reemplazo esos datos con algunos de mis elementos existentes en la página.

Ahora, quiero hacer una segunda llamada ajax, así que he eliminado el contenido html del div cargado. Entonces, nuevamente, la llamada ajax devuelve algún otro código html y script. Pero algunas veces es un conflicto entre el script anterior y el script recién llegado.

EX. primera respuesta sustituyo html y script con algún elemento: $('.ma_right_main').html(response.data);

continuación, antes del 2 de llamada que eliminar contenido: $('.ma_right_main').html('');

segunda respuesta sustituyo html y el guión con algún elemento: $('.ma_right_main').html(response.data);

pero después de reemplazar es el segundo script de tiempo devuelto desde la primera vez que todavía está en ejecución. Quiero eliminarlo al igual que puedo eliminar el contenido html.

+0

+1 pregunta interesante –

Respuesta

3

No creo que una vez que un navegador haya cargado una secuencia de comandos pueda ser eliminada (esto no significa que no pueda eliminarla de la dom, pero aún existiría). Por ejemplo, si tiene una secuencia de comandos con la variable x, cargue la página para que se cargue la secuencia de comandos, elimine la secuencia de comandos de la dom, x Creo que todavía estaría definido.

Sin embargo, hay formas de evitar esto, si cada script cargado dinámicamente fuera su propio objeto, al "descargar" podría establecer el objeto como nulo. Esta es una solución que encontré hace un tiempo cuando buscaba una solución similar.

encuentra la referencia que me refería: https://stackoverflow.com/a/1346903/1475461

3

Las secuencias de comandos no se ejecutan de forma natural en absoluto. (El valor .innerHTML no ejecutará scripts dentro del HTML).

jQuery encuentra todos los elementos de script en el html, los elimina y los evalúa. Por lo tanto, si usa .html y no desea que se ejecuten las secuencias de comandos, no incluya scripts en html.

Y no puede desactivar los scripts, por lo que necesita refaccionar su sitio web con esto en mente. No incluya código nuevo en las respuestas si pueden entrar en conflicto con las anteriores. Use código genérico que siempre está cargado.

+0

Quiere decir que si uso .innerHTML, entonces solo se reemplazará el contenido html. Y no hay efecto de secuencia de comandos luego después. – Parixit

+1

@ user631652 sí, quiero decir, si lo hace 'element.innerHTML =" ";' el script no se ejecuta. Ver http://jsfiddle.net/TTH4R/ – Esailija

Cuestiones relacionadas