Я работаю над отображением данных через кольцевую диаграмму morris.js. Эти данные поступают из базы данных MySQL через PHP и ajax.
Типичный пример, когда вы вводите данные для отображения прямо в коде, работает нормально.
Morris.Donut({
element: 'donut-example',
data: [
{ label: "Download Sales", value: 12 },
{ label: "In-Store Sales", value: 30 },
{ label: "Mail-Order Sales", value: 20 }]
});
однако, когда я вызываю данные из базы данных, диаграмма не отображается. Более того, firebug не показывает никаких ошибок.
Это вывод, который я получаю от PHP:
[{label: "4 pairs",value: "9"},{label: "3 pairs",value: "9"},{label: "2 pairs",value: "6"},{label: "5 pairs",value: "3"},{label: "6 pairs",value: "2"},{label: "1 pair",value: "2"}]
На самом деле, я попробовал этот вывод, скопировав внутри Morris.Donut(); функцию и все заработало!
А это код Ajax (который вообще не работает):
$.ajax({
url: "ajax/modas_pares.php",
type: "post",
data: {lotto: 'the_lotto', limit: 20},
success : function (resp){
//alert(resp);
Morris.Donut({
element: 'donut-example',
data: resp
});
},
error: function(jqXHR, textStatus, ex) {
console.log(textStatus + "," + ex + "," + jqXHR.responseText);
}
});
Однако, если у меня есть следующий код:
$.ajax({
url: "ajax/modas_pares.php",
cache: false,
type: "post",
data: {lotto: 'the_lotto', limit: 20},
//dataType: "json",
timeout:3000,
success : function (resp){
//var column_data = $.parseJSON(resp);
//alert(resp);
Morris.Donut({
element: 'donut-example',
data: [{label: "3 pairs",value: "6"},{label: "4 pairs",value: "5"},{label: "2 pairs",value: "5"},{label: "5 pairs",value: "3"},{label: "1 pair",value: "1"},{label: "6 pairs",value: "1"}]
});
},
error: function(jqXHR, textStatus, ex) {
console.log(textStatus + "," + ex + "," + jqXHR.responseText);
}
});
Работает, нормально!!!
Чего я не понимаю, так это того, что если я попытаюсь передать код через переменную, это не сработает! :
$string='[{label: "4 pairs",value: "9"},{label: "3 pairs",value: "9"},{label: "2 pairs",value: "6"},{label: "5 pairs",value: "3"},{label: "6 pairs",value: "2"},{label: "1 pair",value: "2"}]';
?>
А также
$.ajax({
url: "ajax/modas_pares.php",
cache: false,
type: "post",
data: {lotto: 'the_lotto', limit: 20},
//dataType: "json",
timeout:3000,
success : function (resp){
//var column_data = $.parseJSON(resp);
//alert(resp);
Morris.Donut({
element: 'donut-example',
data: '<?php echo $string ?>'
});
},
error: function(jqXHR, textStatus, ex) {
console.log(textStatus + "," + ex + "," + jqXHR.responseText);
}
});
Это не работает :( если я получу его либо из переменной php, либо из php-скрипта через ajax:/
Что мне не хватает? Как я могу это исправить? Почему?????