In my quest to get historical information, i tried using the below code. Chrome debugger says that Uncaught ReferenceError: $ is not defined
. Can you suggest a fix, i'm really stuck. I just need this to work on Chrome, and I am tapping into YQL and Yahoo API.
here is the jsFiddle /
<html>
<head>
<script type='text/javascript' src=''></script>
<script type='text/javascript'>
google.load('visualization', '1', {'packages':['annotatedtimeline']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
/* historical data code that breaks */
var url = '';
var startDate = '2012-01-01';
var endDate = '2012-01-08';
var jsonData = encodeURIComponent('select * from yahoo.finance.historicaldata where symbol in ("YHOO","AAPL","GOOG","MSFT") and startDate = "' + startDate + '" and endDate = "' + endDate + '"');
$.getJSON(url, 'q=' + data + "&env=http%3A%2F%2Fdatatables%2Falltables.env&format=json", callback);
data.addColumn('date', 'Date');
data.addColumn('number', 'Sold Pencils');
data.addColumn('string', 'title1');
data.addColumn('string', 'text1');
data.addColumn('number', 'Sold Pens');
data.addColumn('string', 'title2');
data.addColumn('string', 'text2'); // not on the fly
data.addRows([
[new Date(2008, 1 ,1), 30000, undefined, undefined, 40645, undefined, undefined],
[new Date(2008, 1 ,2), 14045, undefined, undefined, 20374, undefined, undefined],
[new Date(2008, 1 ,3), 55022, undefined, undefined, 50766, undefined, undefined],
[new Date(2008, 1 ,4), 75284, undefined, undefined, 14334, 'Out of Stock','Ran out of stock on pens at 4pm'],
[new Date(2008, 1 ,5), 41476, 'Bought Pens','Bought 200k pens', 66467, undefined, undefined],
[new Date(2008, 1 ,6), 33322, undefined, undefined, 39463, undefined, undefined]
]);
var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
chart.draw(data, {displayAnnotations: true});
}
</script>
</head>
<body>
// Note how you must specify the size of the container element explicitly!
<div id='chart_div' style='width: 700px; height: 240px;'></div>
</body>
In my quest to get historical information, i tried using the below code. Chrome debugger says that Uncaught ReferenceError: $ is not defined
. Can you suggest a fix, i'm really stuck. I just need this to work on Chrome, and I am tapping into YQL and Yahoo API.
here is the jsFiddle http://jsfiddle/pCK5q/1/
<html>
<head>
<script type='text/javascript' src='http://www.google./jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {'packages':['annotatedtimeline']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
/* historical data code that breaks */
var url = 'http://query.yahooapis./v1/public/yql';
var startDate = '2012-01-01';
var endDate = '2012-01-08';
var jsonData = encodeURIComponent('select * from yahoo.finance.historicaldata where symbol in ("YHOO","AAPL","GOOG","MSFT") and startDate = "' + startDate + '" and endDate = "' + endDate + '"');
$.getJSON(url, 'q=' + data + "&env=http%3A%2F%2Fdatatables%2Falltables.env&format=json", callback);
data.addColumn('date', 'Date');
data.addColumn('number', 'Sold Pencils');
data.addColumn('string', 'title1');
data.addColumn('string', 'text1');
data.addColumn('number', 'Sold Pens');
data.addColumn('string', 'title2');
data.addColumn('string', 'text2'); // not on the fly
data.addRows([
[new Date(2008, 1 ,1), 30000, undefined, undefined, 40645, undefined, undefined],
[new Date(2008, 1 ,2), 14045, undefined, undefined, 20374, undefined, undefined],
[new Date(2008, 1 ,3), 55022, undefined, undefined, 50766, undefined, undefined],
[new Date(2008, 1 ,4), 75284, undefined, undefined, 14334, 'Out of Stock','Ran out of stock on pens at 4pm'],
[new Date(2008, 1 ,5), 41476, 'Bought Pens','Bought 200k pens', 66467, undefined, undefined],
[new Date(2008, 1 ,6), 33322, undefined, undefined, 39463, undefined, undefined]
]);
var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
chart.draw(data, {displayAnnotations: true});
}
</script>
</head>
<body>
// Note how you must specify the size of the container element explicitly!
<div id='chart_div' style='width: 700px; height: 240px;'></div>
</body>
Share
Improve this question
asked Nov 20, 2012 at 20:59
bouncingHippobouncingHippo
6,04023 gold badges71 silver badges110 bronze badges
7
- 5 Where is your jQuery reference? – SpYk3HH Commented Nov 20, 2012 at 21:00
- 1 Are you importing jquery? or another library that uses $? – AJak Commented Nov 20, 2012 at 21:01
- 3 Select 'jQuery' from the dropdown on the left in your JsFiddle. Currently it's Mootools... – ahren Commented Nov 20, 2012 at 21:02
-
1
Please learn how to use jsFiddle: jsfiddle/pCK5q/2. Also, you never define
callback
anywhere. – Felix Kling Commented Nov 20, 2012 at 21:05 -
@FelixKling, how should i define the
callback
then? – bouncingHippo Commented Nov 20, 2012 at 21:06
3 Answers
Reset to default 6Just add a reference to the JQuery source before your script:
<script src="http://code.jquery./jquery.min.js"></script>
Add this line:
google.load("jquery", "1.7.1");
Just under this one you already have:
google.load('visualization', '1', {'packages':['annotatedtimeline']});
This will load jQuery from the Google jsapi you already use. This is the best solution regarding your code.
Try adding a jQuery reference:
<head>
<script type='text/javascript' src='http://code.jquery./jquery-1.8.3.min.js'></script>
<script type='text/javascript' src='http://www.google./jsapi'></script>
<script type='text/javascript'>
OR (but i thinks this wont work because you are calling a jQuery in your loading function, thus first way is probably better)
Add it via the JSAPI Google Loader you're using:
<head>
<script type='text/javascript' src='http://www.google./jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {'packages':['annotatedtimeline']});
google.load("jquery", "1.8.3"); // note, you can also load jQueryUI this way,
// on another note, not sure how high a version google supports
Please see Hosted Libs for more info