我在我的Firebug控制台中的参数列表之后丢失了错误(。
emissing ( 在参数 http://a8.sphotos.ak.fbcdn.net/hphotos-ak-snc7/s720x720/393131_320846714645076_100001592501599_911297_470580896_n.jpg 之后
我的问题是如何在 JavaScript 函数中传递 $char_data 变量作为参数
定义 php 变量:
<?php
$chart_data = "['NBA',1],['NFL',2],['MLB',3],['NHL',4]";
$div = "graph";
?
使用定义参数调用 JavaScript 函数
<script>
dynamicChartArray('<?php echo $div;?>','<?php echo $chartdata;?>')
</script>
JavaScript 的一个函数
<script>
function dynamicChartArray(div,chartdata){
var myData = new Array(chartdata);
var myChart = new JSChart(div, 'pie');
alert(chartdata+div);
}
<script>
与其在javascript中从字符串中创建一个数组,为什么不让PHP将其输出为数组呢?
只需添加一组额外的 [],javascript 将其读取为数组。
$chart_data = "[['NBA',1],['NFL',2],['MLB',3],['NHL',4]]";
然后放弃输出上的引号(导致错误消息的原因(
dynamicChartArray('<?php echo $div;?>', <?php echo $chartdata;?>);
然后myData可以等于图表数据(因为它已经是一个数组(
var myData = chartdata;
'<?php echo $chartdata;?>'
这将呼应'['NBA',1],['NFL',2],['MLB',3],['NHL',4]'
. 请注意单引号内有单引号。
new Array(chartdata)
这将只创建一个数组,其中包含一个元素,字符串"['NBA',1],['NFL',2],['MLB',3],['NHL',4]"
。
尝试做dynamicChartArray('<?php echo $div;?>',[<?php echo $chartdata;?>])
这将使chartdata
成为数组数组。
而不是
$chart_data = "['NBA',1],['NFL',2],['MLB',3],['NHL',4]";
用
$chart_data = "['"NBA'",1],['"NFL'",2],['"MLB'",3],['"NHL'",4]";
将您的呼叫更改为:
dynamicChartArray('<?php echo $div;?>',[<?php echo $chartdata;?>])
并为此发挥作用:
function dynamicChartArray(div,chartdata){
var myData = chartdata;
var myChart = new JSChart(div, 'pie');
alert(chartdata+div);
}
更改以下内容:
dynamicChartArray('<?php echo $div;?>','<?php echo $chartdata;?>')
对此:
dynamicChartArray('<?php echo $div;?>', [<?php echo $chart_data;?>]);
看看它是否有效
你不需要var myData = new Array(chartdata);
.
chartdata
已经是一个数组。
看看json_encode。
$chart_data = json_encode(array(array('NBA',1),array('NFL',2)));
这将生成一个准备回显到脚本中的 JSON 字符串
string(21) "[["NBA",1],["NFL",2]]"
你应该看看输出。我敢打赌是:
dynamicChartArray('graph','['NBA',1],['NFL',2],['MLB',3],['NHL',4]')
而且您已经可以看到您的引号有问题。
我建议不要创建一个字符串,而是创建一个数组并使用json_encode
:
$chart_data = array(
array('NBA',1),
array('NFL',2),
array('MLB',3),
array('NHL',4)
);
和
dynamicChartArray('<?php echo $div;?>', <?php echo json_encode($chartdata); ?>)
JSON恰好也是有效的JavaScript,它为您提供了在服务器端处理数据的更多可能性。