 <p>You're probably executing the <code>highCharts</code> call before the AJAX call has completed. You're also doing an AJAX call in a loop (albeit a small loop, it can still have the same general issues) - if you <em>can</em> - try and make this 1 AJAX call with all the params. If that's not an option - you can loop, and verify all the calls are done, then process:</p> <pre><code>var seriesOptions = [], names = ['MSFT', 'AAPL', 'GOOG']; var completedCalls = 0; for (var i = 0; i &lt; names.length; i++) { var name = names[i]; $.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=' + name.toLowerCase() + '-c.json&amp;callback=?', function(data) { seriesOptions.push({ name: name, data: data }); completedCalls++; if (completedCalls == names.length) { //All ajax calls done, do highcharts magic! $('#container').highcharts('StockChart', { // misc options series: [ seriesOptions[0], seriesOptions[1], seriesOptions[2], ] }) } }); } </code></pre>