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>
I have same issue ... at http://www.xaluan.com .. 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
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(){
see for your js path that may be the causing issue...because You only get this error if jQuery is not correctly loaded.
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.
Set events after loading DOM Elements.
$(function () {
$(document).on("click","selector",function (e) {
alert("hi");
});
});
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="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>
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.
I just had this issue and it was because of me trying to included jQuery via http while my page was loaded as https.
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
});
Source: Stackoverflow.com