如何从PHP端传递JavaScript函数中的数组字符串作为参数?

时间:2012-03-19 19:12:32

标签: php javascript charts arguments

我的Firebug控制台中的参数列表后出现错误

  

emissing ) after argument 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";
?

使用define参数调用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>

7 个答案:

答案 0 :(得分:2)

而不是

$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);
}

答案 1 :(得分:2)

'<?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成为一个数组数组。

答案 2 :(得分:2)

不是在javascript中用字符串创建一个数组,为什么不只是让PHP将它作为一个数组输出呢?

只需添加一组额外的[],javascript将其作为数组读取。

$chart_data = "[['NBA',1],['NFL',2],['MLB',3],['NHL',4]]"; 

然后抛弃输出上的引号(负责导致错误消息)

 dynamicChartArray('<?php echo $div;?>', <?php echo $chartdata;?>);

然后myData可以等于图表数据(因为它已经是一个数组)

var myData = chartdata;

答案 3 :(得分:1)

改变这个:

dynamicChartArray('<?php echo $div;?>','<?php echo $chartdata;?>')

到此:

dynamicChartArray('<?php echo $div;?>', [<?php echo $chart_data;?>]);

看看它是否有效

答案 4 :(得分:1)

您不需要var myData = new Array(chartdata);

chartdata已经是一个数组。

答案 5 :(得分:1)

看看json_encode

$chart_data = json_encode(array(array('NBA',1),array('NFL',2)));

将生成一个json字符串,准备回显到您的脚本

string(21) "[["NBA",1],["NFL",2]]"

答案 6 :(得分:1)

你应该看一下输出。我打赌它是:

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,它为您提供了更多在服务器端处理数据的可能性。