I am using Jquery for getting a json object from a solr server. When I run my html file with Tomcat it is runns fine but when I embed it with my project which is running on weblogic it gets this error: (debugging done through firebug)
$ is not defined
$(document).ready(function(){
Why do I get this error when I embed it in my project?
This is the contents of my <head> tag, It is how I include 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>
11 Answers
Did you load jQuery in head section? Did you load it correctly?
<head>
<script src="scripts/jquery.js"></script>
...
</head>
This code assumes jquery.js is in scripts directory. (You can change file name if you like)
You can also use jQuery as hosted by Google:
<head>
<script src=""></script>
...
</head>
As per your comment:
Apparently, your web server is not configured to return jQuery-1.6.1.js on requesting /webProject/jquery-1.6.1.js. There may be numerous reasons for this, such as wrong file name, folder name, routing settings, etc. You need to create another question and describe your 404 in greater details (such as local file name, operation system, webserver name and settings).
Again, you can use jQuery as provided by Google (see above), however you still might want to find out why some local files don't get served on request.
I found we need to use noConflict sometimes:
jQuery.noConflict()(function ($) { // this was missing for me
$(document).ready(function() {
other code here....
});
});
From the docs:
Many JavaScript libraries use $ as a function or variable name, just as jQuery does. In jQuery's case,
$is just an alias for jQuery, so all functionality is available without using$. If you need to use another JavaScript library alongside jQuery, return control of$back to the other library with a call to$.noConflict(). Old references of$are saved during jQuery initialization;noConflict()simply restores them.
You only get this error if jQuery is not correctly loaded, you can check with firebug what url its trying to load so you can see if your relative path is wrong.
Also, on a separate note, you can use $(function(){ as a shorthand to $(document).ready(function(){
If you have a js file that references the jquery, it could be because the js file is in the body and not in the head section (that was my problem). You should move your js file to the head section AFTER the jquery.js reference.
<html>
<head>
<script src=""></script>
<script src="myfile.js" type="text/javascript"></script>
</head>
<body>
</body>
</html>
see for your js path that may be the causing issue...because You only get this error if jQuery is not correctly loaded.
I just had this issue and it was because of me trying to included jQuery via http while my page was loaded as https.
I have same issue ... at .. but after log. I find out that after jQuery run I make a function using one element id which not exists ..
Eg:
$('#aaa').remove() <span class="aaa">sss</spam>
so the id="aaa" did not exist .. then jQuery stops running.. because errors like that
I had this same problem in Chrome where my scripts were like:
<script src="./scripts/jquery-1.12.3.min.js"></script>
<script src="./scripts/ol-3.15.1/ol.js" />
<script>
...
$(document).ready(function() {
...
});
...
</script>
When I changed to:
<script src="./scripts/jquery-1.12.3.min.js"></script>
<script src="./scripts/ol-3.15.1/ol.js"></script>
$(document).ready was called.
Use:
jQuery(document).ready(function($){
// code where you can use $ thanks to the parameter
});
Or its shorter version:
jQuery(function($){
// code where you can use $ thanks to the parameter
});
You can also write your jquery code in this function. document.addEventListener("DOMContentLoaded",function(),{ },false);
Set events after loading DOM Elements.
$(function () {
$(document).on("click","selector",function (e) {
alert("hi");
});
});