I have been surfing SO for quite some time to find an answer to my question, and I have to admit that I am stumped. I think I must be missing something very simple here but right now I can't see the wood for the trees.
I am trying to load a highchart via JSON, and the JSON is created by a PHP array (the reason for this is that I am retrieving the data from MySQL.) The series are loading fine, however I cannot extract the title for the chart. My understanding is that the code for that needs to be something like json.title.text ... however this does not work and crashes the script. Any help would be greatly appreciated!
The PHP array is as follows (I have put dummy variable to simplify...):
$arr =
array (
array (
'title' => array (
'text' => 'idiot'
),
'data' => array (
'2012-12-16; 0',
'2012-12-16; 23'
)
),
array (
'name' => 'Sacred cows',
'data' => array (
98.9914,
99.5429
)
),
);
echo json_encode($arr);
The javascript that generates the charts is as follows:
function marketwidget(id){
var formData = "name="+ id + "&age=31";
$.ajax({
url : "marketwidget.php",
type: "POST",
data: formData,
success: function(data, textStatus, jqXHR)
{
var json = JSON.parse(data)
var len = json.length
i = 0;
var options = {
title: {
text: []
},
xAxis: {
categories: []
},
series: []
}
options.title.text = json.title.text
for (i; i < len; i++) {
if (i === 0) {
var dat = json[i].data,
lenJ = dat.length,
j = 0,
tmp;
for (j; j < lenJ; j++) {
tmp = dat[j].split(';');
options.xAxis.categories.push(tmp[0]);
}
} else {
options.series.push(json[i]);
}
}
$('#container').highcharts('StockChart', options);
},
error: function(jqXHR, textStatus, errorThrown)
{
}
});
}
encodeURIComponentto properly encode query string parameters. And you can also use'json'as last parameter of$.post, so you don't have to manually useJSON.parse, which might not be available.console.logon the response data? It’s usually very easy to fond the structure from there.json.title.textis wrong. Given the array of objects you just posted, how do you think you should access thetitleproperty of the first object in the array?