Tengo un simple evento jquery click
<script type="text/javascript">
$(function() {
$('#post').click(function() {
alert("test");
});
});
</script>
y una referencia jquery definida en el sitio.
<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>
Verifiqué que el script se está resolviendo correctamente, puedo ver el marcado y ver el script directamente en firebug, así que me deben encontrar. Sin embargo, todavía estoy obteniendo:
$ no está definido
y ninguno de los jquery funciona. También probé las diversas variaciones de esto como $ (document) .ready y jQuery, etc.
Es una aplicación MVC 2 en .net 3.5, estoy seguro de que estoy siendo muy denso, en todas partes en google dice que verifique que el archivo esté referenciado correctamente, lo que he revisado y comprobado nuevamente, ¡por favor avise! : /
javascript
jquery
asp.net-mvc
Paul Creasey
fuente
fuente
Respuestas:
Ese error solo puede ser causado por una de tres cosas:
En primer lugar, asegúrese de qué script se llama correctamente, debería verse así
y no debería tener atributos asíncronos o diferidos .
Luego debe verificar el panel de red Firebug para ver si el archivo se está cargando correctamente. Si no, se resaltará en rojo y dirá "404" al lado. Si el archivo se carga correctamente, eso significa que el problema es el número 2.
Asegúrese de que todo el código jQuery javascript se esté ejecutando dentro de un bloque de código como:
Esto asegurará que su código se cargue después de que jQuery se haya inicializado.
Una última cosa que debe verificar es asegurarse de que no está cargando ningún complemento antes de cargar jQuery. Los complementos extienden el objeto "$", por lo que si carga un complemento antes de cargar jQuery core, obtendrá el error que describió.
Nota: Si está cargando código que no requiere que jQuery se ejecute, no necesita colocarse dentro del controlador listo para jQuery. Ese código puede separarse usando
document.readyState
.fuente
$(document)
tampoco funcionará a menos que tenga una etiqueta de script incluyendo jQuery antes de que la declaración ...Puede ser que tenga su etiqueta de script llamada antes de que se llame al script jquery.
Esto resulta como $ no está definido
Ponga el jquery.js antes de su etiqueta de script y funcionará;) así:
fuente
@section Scripts
etiquetaPrimero debe asegurarse de que el script jQuery esté cargado. Esto podría ser de un CDN o local en su sitio web. Si no carga esto primero antes de intentar usar jQuery, le dirá que jQuery no está definido.
Esto podría estar en el encabezado o en el pie de página de la página, solo asegúrese de cargarlo antes de intentar llamar a cualquier otra cosa de jQuery.
Entonces necesita usar una de las dos soluciones a continuación
o
tenga en cuenta que muchas veces $ (document) .ready (function () {// code here}); no trabajará.
fuente
Si la llamada del complemento jQuery está al lado de
</body>
, y su script se carga antes de eso, debe hacer que su código se ejecute después delwindow.onload
evento, de esta manera:``
por lo tanto, su código se ejecutará solo después de la carga de la ventana, cuando se hayan cargado todos los activos. En ese punto,
$
se definirá jQuery ( ).Si usas eso:
``
la
$
aún no está definido en este momento, porque es llamado antes de cargar el jQuery, y la secuencia de comandos se producirá un error en esa primera línea en la consola.fuente
Simplemente hice lo mismo y descubrí que tenía un montón de
Entonces estaban cargando, pero no dieron más pistas de por qué no estaba funcionando. No hace falta decir que la ortografía correcta lo arregló.
fuente
Utilice una sección de secuencias de comandos en la vista y el diseño maestro.
Ponga todos sus scripts definidos en su vista dentro de una sección de Scripts de la vista. De esta manera, puede hacer que el diseño maestro cargue esto después de que se hayan cargado todos los demás scripts. Esta es la configuración predeterminada al iniciar un nuevo proyecto web MVC5. No estoy seguro acerca de las versiones anteriores.
Vistas / Foo / MyView.cshtml:
Vistas / Compartido / _Layout.cshtml
Observe cómo la sección de secuencias de comandos se representa en último lugar en el archivo de diseño maestro.
fuente
asegúrese de cargar realmente jquery, esto no es jquery, ¡es la interfaz de usuario!
Esta es una fuente de script correcta para jquery:
fuente
Como se indicó anteriormente, ocurre debido al conflicto de $ variable.
Resolví este problema reservando una variable secundaria para jQuery sin conflicto.
y luego úsalo en cualquier lugar
más detalles se pueden encontrar aquí
fuente
Significa que su biblioteca jQuery aún no se ha cargado.
Puede mover su código después de extraer la biblioteca jQuery.
o puedes usar algo como esto
fuente
¿Estás utilizando otras bibliotecas de JavaScript? Si es así, probablemente necesitará usar jQuery en modo de compatibilidad:
http://docs.jquery.com/Using_jQuery_with_Other_Libraries
fuente
Después de algunas pruebas encontré una solución rápida, puede agregar en la parte superior de su página de índice:
funciona muy bien :)
fuente
Recibí el mismo mensaje de error cuando
type="text/javascript"
escribí mal la referencia jQuery y en lugar de escribir "... javascirpt". ;)fuente
type="text/css"
. ¡Gracias por salvar mi cordura!type="javascript"
. Perdí 30 minutos para encontrarlo.Parece que jQuery no se carga correctamente. ¿Qué fuente / versión estás usando?
Alternativamente, podría ser una colisión de espacio de nombres, así que intente usar jQuery explícitamente en lugar de usar
$
. Si eso funciona, puede usarlonoConflict
para asegurarse de que el otro código que está usando$
no se rompa.fuente
Ese error significa que jQuery aún no se ha cargado en la página. Usar
$(document).ready(...)
o cualquier variante del mismo no servirá, como$
es la función jQuery.Usar
window.onload
debería funcionar aquí. Tenga en cuenta que solo se puede asignar una funciónwindow.onload
. Para evitar perder la lógica de carga original, puede decorar la función original de esta manera:Esto ejecutará la función que se asignó originalmente
window.onload
y luego se ejecutará// YOUR JQUERY
.Consulte https://en.wikipedia.org/wiki/Decorator_pattern para obtener más detalles sobre el patrón decorador.
fuente
Yo uso Url.Content y nunca tengo un problema.
fuente
En la solución se menciona: "Una última cosa que debe verificar es asegurarse de que no está cargando ningún complemento antes de cargar jQuery. Los complementos amplían el objeto" $ ", por lo que si carga un complemento antes de cargar jQuery core, entonces obtendré el error que describiste ".
Por evitar esto ...
Muchas bibliotecas de JavaScript usan $ como función o nombre de variable, tal como lo hace jQuery. En el caso de jQuery, $ es solo un alias para jQuery, por lo que toda la funcionalidad está disponible sin usar $. Si necesitamos usar otra biblioteca de JavaScript junto con jQuery, podemos devolver el control de $ a la otra biblioteca con una llamada a $ .noConflict ():
fuente
Tuve este problema una vez sin razón aparente. Estaba sucediendo localmente mientras estaba corriendo a través del servidor de desarrollo aspnet. Había estado funcionando y volví todo a un estado en el que anteriormente había estado funcionando y todavía no funcionaba. Miré en el depurador de cromo y el jquery-1.7.1.min.js se había cargado sin ningún problema. Todo fue muy confuso. Todavía no sé cuál fue el problema, pero cerré el navegador, cerré el servidor de desarrollo y luego volví a solucionarlo.
fuente
Simplemente coloque la url de jquery en la parte superior de su código de jquery
Me gusta esto--
fuente
Tuve el mismo problema y fue porque mi referencia a jQuery.js no estaba en la etiqueta. Una vez que cambié eso, todo comenzó a funcionar.
Antonio
fuente
Verifique que la ruta exacta de su archivo jquery esté incluida.
<script src="assets/plugins/jquery/jquery.min.js"></script>
si agrega esto en la parte inferior de su página, llame a la función JS debajo de esta declaración.
Verifique usando esta prueba de código,
¡Paz!
fuente
Tenemos el mismo problema ... pero accidentalmente verifiqué las propiedades de la carpeta y configuré algo ...
Debe verificar las propiedades de cada carpeta a la que está accediendo.
Espero que esta sea la solución ......
fuente
Cuando use jQuery en asp.net, si está utilizando una página maestra y está cargando el archivo fuente jquery allí, asegúrese de tener el marcador de contenido de encabezado después de todas las referencias de script jquery.
Tuve un problema en el que las páginas que usaban esa página maestra devolverían '$ no está definido' simplemente porque el orden incorrecto estaba haciendo que el código del lado del cliente se ejecutara antes de que se creara el objeto jquery. Así que asegúrese de tener:
De esa manera, el código se ejecutará en orden y podrá ejecutar el código jQuery en las páginas secundarias.
fuente
En mi caso, estaba apuntando a JQuery alojado en Google. Se incluyó correctamente, pero estaba en una página HTTPS y llamé a través de HTTP. Una vez que solucioné el problema (o permití contenido inseguro), se activó de inmediato.
fuente
Estaba teniendo este mismo problema y no podía entender qué lo estaba causando. Recientemente convertí mis archivos HTML del japonés a UTF-8, pero no hice nada con los archivos de script. De alguna manera, jquery-1.10.2.min.js se corrompió en este proceso (todavía no tengo idea de cómo). Reemplazando jquery-1.10.2.min.js con el original lo arregló.
fuente
parece que si ubica sus archivos jquery.js en la misma carpeta o en algunas subcarpetas donde está su archivo html, el problema de Firebug está resuelto. por ejemplo, si su html está en C: / folder1 /, sus archivos js también deberían estar en algún lugar debajo de C: / folder1 / (o C: / folder1 / folder2, etc.) y se abordarán en consecuencia en el documento html. espero que esto ayude.
fuente
Tengo el mismo problema y ningún caso me resuelve el problema. Lo único que funciona para mí, se coloca en el archivo Site.master, el siguiente:
Con src = "<% = ResolveUrl (" ") ... la carga de jQuery en las páginas de contenido es correcta.
fuente
Tuve un problema muy similar. En mi aplicación C # MVC, JQuery no estaba siendo reconocido. Necesitaba mover el @ Scripts.Render ("~ / bundles / jquery") desde la parte inferior de mi archivo _Layout.cshtml al encabezado de la sección. ¡También asegúrese de tener Jquery como un paquete Nuget si está usando Visual Studio!
fuente
Hay una manera de hacer que cargue automáticamente JavaScript antes de que se ejecute el resto del código.
Vaya a Vistas \ Shared_Layout.html y agregue lo siguiente
fuente
si la
script
etiqueta tienedefer
atributo, muestra el errory debe eliminar el atributo
defer
de lascript
etiquetafuente
Este es el problema común para resolver esto, debe verificar algún punto
Los detalles completos se dan en este blog, haga clic aquí
fuente