【发布时间】:2015-08-29 21:15:11
【问题描述】:
我正在尝试使用下面的代码一次生成多个折线图。但是,它不起作用。使用 for/while 或任何其他循环机制生成图形的最佳方法是什么?我有很多图表要生成。
var db_query = Array();
db_query[1] = <?php echo json_encode($db_query_1) ?>;
db_query[2] = <?php echo json_encode($db_query_2) ?>;
var chartConfig1 = clone(chartConfigLineOne);
var chartConfig2 = clone(chartConfigLineOne);
for(var i=1, len=2; i <= len; i++) {
/* chart initialization */
var chart_num = "chart" + i.toString();
var plot_num = "plot" + i.toString();
var chartConfig_num = "chartConfig" + i.toString();
/*alert(chart_num);
alert(plot_num);
alert(chartConfig_num);*/
chart_num = AmCharts.makeChart(plot_num, chartConfig_num);
$.ajax({
type: 'POST',
url: "query_db.php",
data: {'db_que': db_query[i]},
dataType: 'json',
context: document.body,
global: false,
async: true,
success: function(data) {
//alert(data);
chart_num.dataProvider = data;
chart_num.validateNow();
}
});
}
更新代码
<script type="text/javascript">
var chartNameList = ['chart1','chart2'];
var divId = ['plot1','plot2'];
var configList = ['chartConfig1','chartConfig2'];
var dbQuery = [];
var chartConfig1 = clone(chartConfigLineOne);
var chartConfig2 = clone(chartConfigLineOne);
dbQuery[0] = <?php echo json_encode($db_query_1) ?>;
dbQuery[1] = <?php echo json_encode($db_query_2) ?>;
/* chart initialization */
for(var i =0; i < 2; i += 1) {
//window["chart"+i] = createChartObj(divId[i],configList[i]);
execDbQuery(divId[i],configList[i],dbQuery[i],chartNameList[i]);
}
</script>
/**
* Execute of DB query
*/
function execDbQuery(divId, configObj, dbQuery, chartObj) {
chartObj = AmCharts.makeChart(divId, configObj);
$.ajax({
type: 'POST',
url: "query_db.php",
data: {'db_que': dbQuery},
dataType: 'json',
context: document.body,
global: false,
async: true,
success: function(data) {
//alert(data);
chartObj.dataProvider = data;
chartObj.validateNow();
}
});
}
【问题讨论】:
-
不要将
JavaScript与PHP混用,例如db_query[1] = <?php echo json_encode($db_query_1) ?>;。这太可怕了。并且尽量不要使用多个var a; var b; var c;,而是只使用var a = 123, b = 345, ...。如果你不改变你的编程风格,总有一天你的代码会看起来像意大利面条。 -
而不是警报,如
alert(data)使用console.log(data)。您正在编程的风格在几年前已经过时了。所以,你最好在JavaScript阅读一些专业编程方面的书籍。 -
你好 Jacobian - 谢谢你的指示。我是编程新手。这绝对是一个陡峭的学习曲线。我可以请求您的帮助以了解如何做我想要实现的目标吗?另外,如果您能快速向我介绍如何在 javascript 中访问 PHP 数据或其他方式,那将非常有帮助
-
您已经知道如何访问
Javascript中的PHP数据。这实际上是ajax在您的示例中所做的。 -
退后一步,我有一个用户选择值的主页。然后单击提交后,这些值将发布到动态构造 SQL 的 PHP 页面(接收数据和构建 SQL 查询发生在 部分之间。在本节之后,我有一个 javascript 部分在里面我有ajax代码。所以,要访问PHP代码中内置的SQL,我正在使用db_query[1] = 你能建议一种不同的方式吗?
标签: javascript jquery ajax amcharts