J'utilise Jquery pour obtenir un objet JSON à partir d'un serveur solr. Lorsque je lance mon fichier html avec Tomcat, il fonctionne très bien, mais lorsque je l’intègre dans mon projet exécuté sur weblogic, le message d'erreur suivant s'affiche: (le débogage est effectué via firebug)
$ is not defined
$(document).ready(function(){
Pourquoi cette erreur survient-elle lorsque je l’intègre dans mon projet?
Voici le contenu de ma balise <head>
, c’est ainsi que j’inclue jquery.js:
<head>
<title>Search Result </title>
<style>
img{ height: 150px; float: left; border: 3;}
div{font-size:10pt; margin-right:150px;
margin-left:150px; }
</style>
<script type="text/javascript" src="jquery-1.6.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){ //Error happens here, $ is not defined.
});
</script>
</head>
Avez-vous chargé jQuery dans la section head
? L'avez-vous chargé correctement?
<head>
<script src="scripts/jquery.js"></script>
...
</head>
Ce code suppose que jquery.js
est dans le répertoire scripts
. (Vous pouvez changer le nom du fichier si vous le souhaitez)
Vous pouvez également utiliser jQuery hébergé par Google :
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
...
</head>
Apparemment, votre serveur Web n’est pas configuré pour renvoyer jQuery-1.6.1.js
lorsqu’il demande /webProject/jquery-1.6.1.js
. Il peut y avoir plusieurs raisons à cela, telles qu'un nom de fichier incorrect, un nom de dossier, des paramètres de routage, etc. Vous devez créer une autre question et décrire votre 404
de manière plus détaillée (tel que le nom de fichier local, le système d'exploitation, le nom du serveur Web et les paramètres) .
Encore une fois, vous pouvez utiliser jQuery tel que fourni par Google (voir ci-dessus), mais vous voudrez peut-être toujours savoir pourquoi certains fichiers locaux ne sont pas servis sur demande.
J'ai trouvé que nous devions utiliser noConflict parfois:
jQuery.noConflict()(function ($) { // this was missing for me
$(document).ready(function() {
other code here....
});
});
De la docs:
De nombreuses bibliothèques JavaScript utilisent $ comme nom de fonction ou de variable, tout comme jQuery. Dans le cas de jQuery,
$
est simplement un alias pour jQuery, de sorte que toutes les fonctionnalités sont disponibles sans utiliser$
. Si vous devez utiliser une autre bibliothèque JavaScript à côté de jQuery, renvoyez le contrôle de$
à l'autre bibliothèque avec un appel à$.noConflict()
. Les anciennes références de$
sont enregistrées lors de l’initialisation de jQuery;noConflict()
les restaure simplement.
Vous n'obtenez cette erreur que si jQuery n'est pas correctement chargé. Vous pouvez vérifier avec firebug quelle URL il essaie de charger afin de voir si votre chemin relatif est incorrect.
De plus, sur une note séparée, vous pouvez utiliser $(function(){
comme raccourci pour $(document).ready(function(){
Si vous avez un fichier js qui référence la jquery, cela peut être dû au fait que le fichier js se trouve dans le corps et non dans la section head (c'était mon problème). Vous devez déplacer votre fichier js vers la section head APRES la référence jquery.js.
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js"></script>
<script src="myfile.js" type="text/javascript"></script>
</head>
<body>
</body>
</html>
Je viens d'avoir ce problème et c'est parce que j'ai essayé d'inclure jQuery via http alors que ma page était chargée en tant que https.
J'ai eu ce même problème dans Chrome où mes scripts étaient comme:
<script src="./scripts/jquery-1.12.3.min.js"></script>
<script src="./scripts/ol-3.15.1/ol.js" />
<script>
...
$(document).ready(function() {
...
});
...
</script>
Quand j'ai changé pour:
<script src="./scripts/jquery-1.12.3.min.js"></script>
<script src="./scripts/ol-3.15.1/ol.js"></script>
$ (document) .ready a été appelé.
voir pour votre chemin js qui peut être la cause du problème ... parce que vous obtenez cette erreur uniquement si jQuery n'est pas correctement chargé.
J'ai le même problème ... à http://www.xaluan.com .. mais après le journal. Je découvre qu'après l'exécution de jQuery, je crée une fonction à l'aide d'un identifiant d'élément qui n'existe pas.
Par exemple:
$('#aaa').remove() <span class="aaa">sss</spam>
donc le id="aaa"
n'existait pas .. alors jQuery s'arrête de fonctionner .. car des erreurs comme celle-ci
Utilisation:
jQuery(document).ready(function($){
// code where you can use $ thanks to the parameter
});
Ou sa version plus courte:
jQuery(function($){
// code where you can use $ thanks to the parameter
});