У меня есть комбинированная диаграмма Google, которую я создаю на странице с вызовом AJAX для получения данных с другой страницы.
google.charts.load('current', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var jsonData = $.ajax({
url: "generate_gp_graph.php",
dataType: "json",
async: false
}).responseText;
// Create our data table out of JSON data loaded from server.
var data = new google.visualization.DataTable(jsonData);
var options = {
vAxis: {title: 'Value (€)'},
hAxis: {title: 'Audit Date'},
legend:{position: 'top', maxLines:2},
seriesType: 'bars',
series: {
3: {type: 'line', targetAxisIndex:0},
4: {type: 'line', targetAxisIndex:1}
},
vAxes: {
1: {
title:'Gross Profit %',
textStyle: {color: 'green'}
}
}};
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
То, что я сейчас пытаюсь сделать, это обновить данные и перерисовать график при нажатии кнопки.Я попробовал следующее
$('#year_to_date').click(function(event){
var page = 'generate_gp_graph.php';
$.ajax({
url : page,
data : {'action' : 'year_to_date','store_id' : "<?php echo $store_id ?>"},
type : 'post',
success: function(result) {
function drawChart() {
var jsonData = $.ajax({
url: "generate_gp_graph.php",
dataType: "json",
async: false
}).responseText;
// Create our data table out of JSON data loaded from server.
var data = new google.visualization.DataTable(jsonData);
var options = {
vAxis: {title: 'Value (€)'},
hAxis: {title: 'Audit Date'},
legend:{position: 'top', maxLines:2},
seriesType: 'bars',
series: {
3: {type: 'line', targetAxisIndex:0},
4: {type: 'line', targetAxisIndex:1}
},
vAxes: {
1: {
title:'Gross Profit %',
textStyle: {color: 'green'}
}
}};
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
chart.draw(data, options);
}},
error: function() {}
});
});
, и хотя функция работает правильно и возвращаются правильные данные, график не отображается снова с новыми деталями.Чего мне не хватает в успехе AJAX, чтобы перерисовать график?