Php 谷歌在ajax上的图表只在第一次起作用
这是一个两个问题,我的代码的实际状态是:Php 谷歌在ajax上的图表只在第一次起作用,php,javascript,jquery,google-visualization,Php,Javascript,Jquery,Google Visualization,这是一个两个问题,我的代码的实际状态是: <script type="text/javascript"> init_ui(); function init_ui() { $("[rel='tooltip']").tooltip(); $(".ajax_link").live("click",function(){ id = $(this).attr("id"); jQuery("#ajax_div")
<script type="text/javascript">
init_ui();
function init_ui() {
$("[rel='tooltip']").tooltip();
$(".ajax_link").live("click",function(){
id = $(this).attr("id");
jQuery("#ajax_div").html('<img src="../../../../bundles/donepunctis/img/loading.gif" alt="loading...">');
jQuery.ajax({
url: '<?= $view['router'] -> generate('done_punctis_ajax_detail_data_url'); ?>' + '?id=' + id,
success:function(result){
jQuery("#ajax_div").html('');
//alert(data);
chart.draw(data, options);
}
});
})
}
var data;
var options;
var chart;
// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);
// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawChart() {
// Create the data table.
data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
data.addRows([
['Mushrooms', 3],
['Onions', 1],
['Olives', 1],
['Zucchini', 1],
['Pepperoni', 2]
]);
// Set chart options
options = {'title':'How Much Pizza I Ate Last Night',
'width':400,
'height':300};
// Instantiate and draw our chart, passing in some options.
chart = new google.visualization.PieChart(document.getElementById('ajax_div'));
}
</script>
init_ui();
函数init_ui(){
$(“[rel='tooltip']”)。tooltip();
$(“.ajax_link”).live(“单击”,函数(){
id=$(this.attr(“id”);
jQuery(“#ajax_div”).html(“”);
jQuery.ajax({
url:“+”?id=“+id,
成功:功能(结果){
jQuery(“#ajax_div”).html(“”);
//警报(数据);
图表绘制(数据、选项);
}
});
})
}
var数据;
var期权;
var图;
//加载可视化API和piechart包。
load('visualization','1.0',{'packages':['corechart']});
//将回调设置为在加载Google Visualization API时运行。
setOnLoadCallback(drawChart);
//创建并填充数据表的回调,
//实例化饼图,传入数据并
//画它。
函数绘图图(){
//创建数据表。
data=new google.visualization.DataTable();
data.addColumn('string','Topping');
data.addColumn('number','Slices');
data.addRows([
[‘蘑菇’,3],
[‘洋葱’,1],
[Olives',1],
[‘西葫芦’,1],
[意大利香肠,2]
]);
//设置图表选项
选项={'title':'我昨晚吃了多少比萨饼',
“宽度”:400,
‘高度’:300};
//实例化并绘制图表,传入一些选项。
chart=新的google.visualization.PieChart(document.getElementById('ajax_div');
}
目前,我只是忽略了ajax调用的返回,使用var数据上硬编码的图表管理数据
$调用中的成功回调。ajax
调用:
jQuery.ajax({
url: '<?= $view['router'] -> generate('done_punctis_ajax_detail_data_url'); ?>' + '?id=' + id,
success:function(result){
jQuery("#ajax_div").html('');
chart.draw(data, options);
}
});
然后在drawChart
中,您可以使用新数据填充图表:
jQuery.ajax({
url: '<?= $view['router'] -> generate('done_punctis_ajax_detail_data_url'); ?>' + '?id=' + id,
success:function(result){
jQuery("#ajax_div").html('');
drawChart(data);
}
});
function drawChart(myData) {
// Create the data table.
data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
if(myData) {
// TODO: add rows based on myData
} else {
data.addRows([
['Mushrooms', 3],
['Onions', 1],
['Olives', 1],
['Zucchini', 1],
['Pepperoni', 2]
]);
}
...
从jQuery1.7开始,不推荐使用
.live()
方法。使用.on()
附加事件处理程序。较旧版本的jQuery用户应该优先使用.delegate()
,而不是.live()
。让您的php为数据创建如文档所示的数组谢谢!,你能告诉我第二个问题吗,现在我正在尝试使用json,但我的格式有问题,我的表格非常简单:列上有性别和%,行上只有M:40%和F:60%。我的尝试:我几乎不会说PHP,所以我无法帮助你。我建议将该代码作为一个单独的问题发布,并将此问题简化为关于JavaScript的问题。周围有很多PHP专家,但我们现在可能用这些JavaScript东西吓跑了他们