J'ai un simple événement de clic jquery
<script type="text/javascript">
$(function() {
$('#post').click(function() {
alert("test");
});
});
</script>
et une référence jquery définie dans le site.master
<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>
J'ai vérifié que le script est correctement résolu, je peux voir le balisage et afficher le script directement dans firebug, donc je dois être trouvé. Cependant, je reçois toujours:
$ n'est pas défini
et aucun des jquery ne fonctionne. J'ai également essayé les différentes variantes de ceci comme $ (document) .ready et jQuery etc.
C'est une application MVC 2 sur .net 3.5, je suis sûr que je suis vraiment dense, partout sur google dit de vérifier que le fichier est référencé correctement, ce que j'ai vérifié et vérifié à nouveau, veuillez conseiller! : /
javascript
jquery
asp.net-mvc
Paul Creasey
la source
la source
Réponses:
Cette erreur ne peut être causée que par l'une des trois choses suivantes:
Tout d'abord, assurez-vous que le script est appelé correctement, il devrait ressembler à
et ne devrait pas avoir d'attributs asynchrones ou différés .
Ensuite, vous devriez vérifier le panneau net Firebug pour voir si le fichier est réellement chargé correctement. Sinon, il sera surligné en rouge et indiquera "404" à côté. Si le fichier se charge correctement, cela signifie que le problème est le numéro 2.
Assurez-vous que tout le code javascript jQuery est exécuté dans un bloc de code tel que:
Cela garantira que votre code est chargé après l' initialisation de jQuery.
Une dernière chose à vérifier est de vous assurer que vous ne chargez aucun plugin avant de charger jQuery. Les plugins étendent l'objet "$", donc si vous chargez un plugin avant de charger le noyau jQuery, vous obtiendrez l'erreur que vous avez décrite.
Remarque: Si vous chargez du code qui ne nécessite pas l'exécution de jQuery, il n'est pas nécessaire de le placer dans le gestionnaire prêt pour jQuery. Ce code peut être séparé en utilisant
document.readyState
.la source
$(document)
ne fonctionnera pas non plus sauf si vous avez une balise de script incluant jQuery avant cette déclaration ...Il se peut que votre balise de script soit appelée avant l'appel du script jquery.
Il en résulte que $ n'est pas défini
Mettez le jquery.js avant votre balise de script et cela fonctionnera;) comme ceci:
la source
@section Scripts
baliseVous devez d'abord vous assurer que le script jQuery est chargé. Cela peut provenir d'un CDN ou local sur votre site Web. Si vous ne le chargez pas avant d'essayer d'utiliser jQuery, il vous indiquera que jQuery n'est pas défini.
Cela pourrait être dans la tête ou dans le pied de page de la page, assurez-vous simplement de le charger avant d'essayer d'appeler tout autre élément jQuery.
Ensuite, vous devez utiliser l'une des deux solutions ci-dessous
ou
veuillez noter que plusieurs fois $ (document) .ready (function () {// code here}); ne fonctionnera pas.
la source
Si l'appel du plugin jQuery est à côté de
</body>
et que votre script est chargé avant cela, vous devez faire en sorte que votre code s'exécute après l'window.onload
événement, comme ceci:"
ainsi, votre code ne s'exécutera qu'après le chargement de la fenêtre, lorsque tous les actifs auront été chargés. À ce stade, le jQuery (
$
) sera défini.Si vous l'utilisez:
"
le
$
n'est pas encore défini pour le moment, car il est appelé avant le chargement de jQuery, et votre script échouera sur cette première ligne de la console.la source
Je viens de faire la même chose et j'ai trouvé que j'avais beaucoup de
Ils étaient donc en train de charger, mais aucune autre indication de pourquoi cela ne fonctionnait pas. Inutile de dire que l'orthographe correcte l'a corrigé.
la source
Utiliser une section de scripts dans la vue et la disposition principale.
Placez tous vos scripts définis dans votre vue dans une section Scripts de la vue. De cette façon, vous pouvez charger la disposition principale après le chargement de tous les autres scripts. Il s'agit de la configuration par défaut lors du démarrage d'un nouveau projet Web MVC5. Pas sûr des versions antérieures.
Vues / Foo / MyView.cshtml:
Vues / Partagé / _Layout.cshtml
Notez comment la section des scripts est restituée en dernier dans le fichier de disposition principal.
la source
assurez-vous que vous chargez vraiment jquery ce n'est pas jquery - c'est l'interface utilisateur!
Ceci est une source de script correcte pour jquery:
la source
Comme indiqué ci-dessus, cela se produit en raison du conflit de $ variable.
J'ai résolu ce problème en réservant une variable secondaire pour jQuery sans conflit.
puis l'utiliser n'importe où
plus de détails peuvent être trouvés ici
la source
Cela signifie que votre bibliothèque jQuery n'a pas encore été chargée.
Vous pouvez déplacer votre code après avoir extrait la bibliothèque jQuery.
ou vous pouvez utiliser quelque chose comme ça
la source
Utilisez-vous d'autres bibliothèques JavaScript? Si c'est le cas, vous devrez probablement utiliser jQuery en mode de compatibilité:
http://docs.jquery.com/Using_jQuery_with_Other_Libraries
la source
après quelques tests j'ai trouvé une solution rapide, vous pouvez ajouter en haut de votre page d'index:
ça marche très bien :)
la source
J'ai reçu le même message d'erreur lorsque j'ai mal orthographié la référence jQuery et au lieu de
type="text/javascript"
j'ai tapé "... javascirpt". ;)la source
type="text/css"
. Merci d'avoir sauvé ma raison!type="javascript"
. J'ai perdu 30 minutes à le trouver.Il semble que jQuery ne se charge pas correctement. Quelle source / version utilisez-vous?
Alternativement, il pourrait s'agir d'une collision d'espace de noms, essayez donc d'utiliser explicitement jQuery au lieu de l'utiliser
$
. Si cela fonctionne, vous voudrez peut-être utilisernoConflict
pour vous assurer que l'autre code utilisé$
ne se casse pas.la source
Cette erreur signifie que jQuery n'a pas encore été chargé sur la page. Utiliser
$(document).ready(...)
ou toute variante de celui-ci ne servira à rien, tout comme$
la fonction jQuery.L'utilisation
window.onload
devrait fonctionner ici. Notez qu'une seule fonction peut être affectée àwindow.onload
. Pour éviter de perdre la logique de chargement d'origine, vous pouvez décorer la fonction d'origine comme suit:Cela exécutera la fonction qui a été affectée à l'origine
window.onload
, puis s'exécutera// YOUR JQUERY
.Voir https://en.wikipedia.org/wiki/Decorator_pattern pour plus de détails sur le motif décorateur.
la source
J'utilise Url.Content et n'ai jamais de problème.
la source
Dans la solution, il est mentionné - "Une dernière chose à vérifier est de vous assurer que vous ne chargez aucun plugin avant de charger jQuery. Les plugins étendent l'objet" $ ", donc si vous chargez un plugin avant de charger le noyau jQuery, alors vous obtiendrez l'erreur que vous avez décrite. "
Pour éviter cela -
De nombreuses bibliothèques JavaScript utilisent $ comme nom de fonction ou de variable, tout comme jQuery. Dans le cas de jQuery, $ est juste un alias pour jQuery, donc toutes les fonctionnalités sont disponibles sans utiliser $. Si nous devons utiliser une autre bibliothèque JavaScript avec jQuery, nous pouvons retourner le contrôle de $ à l'autre bibliothèque en appelant $ .noConflict ():
la source
J'ai eu ce problème une fois sans raison apparente. Il se produisait localement pendant que je courais via le serveur de développement aspnet. Cela fonctionnait et j'ai tout remis dans un état où cela fonctionnait auparavant et cela ne fonctionnait toujours pas. J'ai regardé dans le débogueur Chrome et le jquery-1.7.1.min.js s'était chargé sans aucun problème. C'était très déroutant. Je ne sais toujours pas quel était le problème, mais en fermant le navigateur, en fermant le serveur de développement, puis en réessayant.
la source
Placez simplement l'URL jquery en haut de votre code jquery
comme ça--
la source
J'ai eu le même problème et c'était parce que ma référence au jQuery.js n'était pas dans la balise. Une fois que j'ai changé cela, tout a commencé à fonctionner.
Anthony
la source
Vérifiez que le chemin exact de votre fichier jquery est inclus.
<script src="assets/plugins/jquery/jquery.min.js"></script>
si vous ajoutez ceci en bas de votre page, veuillez appeler la fonction JS en dessous de cette déclaration.
Vérifiez en utilisant ce test de code,
Paix!
la source
Nous avons le même problème .... mais accidentellement, j'ai vérifié les propriétés du dossier et défini quelque chose ...
Vous devez vérifier les propriétés de chaque dossier auquel vous accédez.
J'espère que c'est la solution ......
la source
Lorsque vous utilisez jQuery dans asp.net, si vous utilisez une page maître et que vous y chargez le fichier source jquery, assurez-vous de disposer de l'espace de contenu content header après toutes les références du script jquery.
J'ai eu un problème où toutes les pages qui utilisaient cette page maître retournaient «$ n'est pas défini» simplement parce que l'ordre incorrect faisait exécuter le code côté client avant la création de l'objet jquery. Assurez-vous donc d'avoir:
De cette façon, le code s'exécutera dans l'ordre et vous pourrez exécuter le code jQuery sur les pages enfants.
la source
Dans mon cas, je pointais sur Google hébergé JQuery. Il était inclus correctement, mais j'étais sur une page HTTPS et je l'appelais via HTTP. Une fois que j'ai résolu le problème (ou autorisé le contenu non sécurisé), il s'est déclenché.
la source
J'avais ce même problème et je ne pouvais pas comprendre ce qui en était la cause. J'ai récemment converti mes fichiers HTML du japonais en UTF-8, mais je n'ai rien fait avec les fichiers de script. D'une certaine manière, jquery-1.10.2.min.js a été corrompu dans ce processus (je ne sais toujours pas comment). Le remplacement de jquery-1.10.2.min.js par l'original l'a corrigé.
la source
il semble que si vous localisez vos fichiers jquery.js sous le même dossier ou dans certains sous-dossiers où se trouve votre fichier html, le problème Firebug est résolu. Par exemple, si votre html est sous C: / dossier1 /, alors vos fichiers js doivent être quelque part sous C: / dossier1 / (ou C: / dossier1 / dossier2, etc.) également et adressés en conséquence dans le document html. J'espère que cela t'aides.
la source
J'ai le même problème et aucun cas ne me résout le problème. La seule chose qui fonctionne pour moi, c'est de mettre le fichier Site.master, le suivant:
Avec src = "<% = ResolveUrl (" ") ... la charge de jQuery dans les pages de contenu est correcte.
la source
J'ai eu un problème très similaire. Dans mon application C # MVC, JQuery n'était pas reconnu. J'avais besoin de déplacer le @ Scripts.Render ("~ / bundles / jquery") du bas de mon fichier _Layout.cshtml vers le début de la section. Assurez-vous également d'avoir saisi Jquery en tant que package Nuget si vous utilisez Visual Studio!
la source
Il existe un moyen de le faire charger automatiquement le javascript avant l'exécution du reste du code.
Allez dans Views \ Shared_Layout.html et ajoutez ce qui suit
la source
si la
script
balise a undefer
attribut, elle montre l'erreuret doit supprimer l'attribut
defer
de lascript
balisela source
C'est le problème commun pour résoudre ce problème, vous devez vérifier un certain point
Tous les détails sont donnés dans ce blog cliquez ici
la source