2009-12-06 22 views
26

En un archivo php he usado include para incluir el siguiente archivo js.php y antes de eso he incluido el archivo jquery.

<script type="text/javascript"> 

$(document).ready(function(){ 
    alert("hello"); 
}); 
</script> 

Pero no funciona. ¿Por qué? cuando omito la función $ (document) .ready, funciona.

Pero necesito el código jquery dentro. ¿qué está mal?

+2

¿Puedes publicar tu código PHP también? – SimonDever

+1

Publique los errores que recibe.Si está utilizando Firefox, puede acceder a la consola de errores a través de "Herramientas> Consola de errores" – Yacoby

+0

¿Está utilizando alguna otra estructura de JavaScript? ¿Es correcta la ruta a su archivo jquery? – nowk

Respuesta

30

La respuesta más probable, basada en lo que ha dicho, es que el archivo jQuery central no está realmente incluido correctamente en la página. Es necesario algo así como:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

más probable es que este no se encuentra o escribe de forma incorrecta.

+1

He visto esta misma pregunta en numerosas ocasiones, y casi siempre ha sido la etiqueta jQuery

4
  1. Compruebe si jQuery está cargado correctamente.
  2. Mire la barra de progreso del navegador: puede estar cargando algunos contadores y el documento no está listo hasta que se carguen: esto sucede a menudo cuando los recursos externos son lentos.
  3. Pruebe $(function(){ alert(...); }); por si acaso ...
  4. Compruebe si tiene errores JS antes de este enlace de carga. Use el complemento FireBug de Firefox para verificarlo.
+0

firebug dice que \t \t $ (document) ready (function() { no está definido ... ¿es algo malo en mi archivo de jQuery? –

+0

¿Está usando Mootools? ... si es así, asegúrese de que tiene Jquery establece compatibilidad – Mottie

+0

si dice $ (documento) .... no es una función que significa que 1) otra biblioteca está capturando el $, o que jQuery no se cargó correctamente. – helloandre

24

Otra de las causas que silenciosamente se producirá un error, y todas las devoluciones de llamada restantes no llamados:

$(document).ready(null); 

A fin de comprobar si tiene variables o errores de sintaxis que devuelven nula. Como este:

$(document).ready(function($){}(jQuery)); 

Observe que la función anterior se llama al instante y se devuelve indefinido.

+0

No parece suceder con jQuery reciente: http://jsfiddle.net/0g5ae8y3/ – Tgr

+0

Por ejemplo, yo, había utilizado una variable no definida anteriormente como una entrada de selector en '$(). Each' callback. –

-3

en lugar de $ (documento) .ready (function() {...});

tratar

$ (document) ready (abc());

Función ABC() {} ....

trabajaban para mí me.i han buscado muchos lugares, pero no pudo encontrar una solución. ¡Probé esto al azar y funcionó!

+6

A menos que su función abc devuelva una función, este código no hace lo que usted piensa. abc ejecutará y enviará el valor de retorno a $ (document) .ready(). Si el valor de retorno es nulo, puede causar problemas a otros, como expliqué en mi respuesta. También podrías hacer abc(); o (función() {...})(); – gregers

-4

Tuve tal problema, acaba de cambiar <script type="text/javascript"> a <script type="javascript"> y se han ido todos los problemas!

1

Me enfrenté a un problema similar también y esto es lo que hice.

Asegúrese de que document.ready se coloca después la función de devolución de llamada se define en el archivo de Javascript.

Aquí, init aún no está definido cuando se está analizando document.ready.

//won't work 
$(document).ready(init); 
var init = function() { 
    console.log('init not called'); 
} 

Método correcto:

//Works 
var init = function() { 
    console.log('document is ready'); 
} 
$(document).ready(init); 

en cuenta que $ (document) ready (init) se coloca al final.

3

También mirar hacia fuera cómo se defina la etiqueta include jQuery. Parece que por alguna razón necesita abrir y cerrar la etiqueta con dos etiquetas separadas. El uso de una etiqueta con el cierre no parece funcionar:

Obras:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script> 

No funciona:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"/> 
1

Sí, me di cuenta de que a veces es un problema con eso, escribí segura solución para eso, que soluciona este problema.

// jquery plugin 'jquery.ready.fix.js' 
// @author Szymon Działowski 
;(function ($) { 
    $.fn.ready.old || $(function (r) { 
     r = $.fn.ready; 
     $.fn.ready = function (fn) { $.isReady ? fn() : r(fn); }; 
     $.fn.ready.old = r; 
    }); 
})(jQuery); 

después de que se puede ejecutar código:

$(function() {alert('go')}) 

y siempre alerta fuego.

PS: se trata de una técnica llamada "pato perforación" más sobre: ​​http://www.paulirish.com/2010/duck-punching-with-jquery/

1

Siguiendo Zakas' The art of throwing JavaScript errors, empecé a tirar mis propios errores en JavaScript como un enfoque para encontrar problemas de JS.

Pero este enfoque por desgracia comenzó a causar la lista jQuery() para dejar en silencio, por partes no relacionadas del sitio. :(

me mostró que los siguientes son diferentes:

throw new Error() 

es diferente de

console.error() 

Así, empecé a usar console.error(), y todavía tiene el resaltado de color rojo en la consola

1

Otro punto a verificar: Tal vez tengas un error de PHP en tu programa. Un error de PHP Fatal sale del script y $(document).ready nunca será ejecutado.

Dependiendo de la configuración del servidor o en su CSS puede que no vea el mensaje Fatal error.

0

En mi caso no se ha llamado a document.ready porque un formulario html fue enviado al servidor por solicitud Ajax y solo se recibió una parte del documento, y el documento listo no se invoca después de la solicitud ajax.

En consecuencia, algunos botones que estaban en esa parte que se recargó ya no estaban vinculados a eventos .click() atc .. more porque estos botones eran nuevos y se llamó el enlace de estos eventos durante el documento listo solo la primera vez - no para AJAX.

Cuestiones relacionadas