2010-02-04 24 views
5

¿Cuáles podrían ser las razones para no ejecutar document.ready dentro de la página parcial devuelta? funciona bien 2 veces, pero el 3 de tiempo no pasa nada después de la actualización de html:

alert(html); 
alert($(PopUpItem)); 
$(PopUpItem).html(html); 
alert('in set popup html completed'); 

he ejecutado todas las alertas, PopupItem y HTML tiene valores correctos. Estoy usando JQuery para ejecutar la llamada al servidor por $ .post.

Además, ¿Puedo tener un controlador de errores para detectar si se produjo algún error de sintaxis?

Respuesta

12

Dentro de su AJAX devuelto, no debería necesitar una llamada $ (document) .ready(). El DOM ya se ha cargado. Algo simple como este debería ser el truco:

<script type="text/javascript"> 
// Do something here. 
</script> 
+4

Odio la idea de eliminar document.ready, porque para los scripts que se pueden devolver tanto en la carga de página como en ajax, necesito implementar una doble lógica, ¡pero esto funciona! – st78

2

document.ready solo se ejecuta cuando la página se carga originalmente.

Para tener un controlador de errores, puede utilizar más $ .ajax para hacer sus llamadas ajax (http://api.jquery.com/jQuery.ajax/).

2

¿Quiere decir que la cadena html pasado a $(PopUpItem).html() contiene un bloque con una <script>document.ready(function() { ... }); dentro de ella?

Si es así, el motivo por el que el controlador de eventos ready no se activa es que la secuencia de comandos no se ejecuta en absoluto. Ver this question que tiene el mismo comportamiento de "tercera vez".

No cargue las etiquetas <script> en el marcado. No es fiable en todos los navegadores, jQuery o no jQuery.

Cuestiones relacionadas