如何在 JavaScript 函数中从 PHP end 传递数组字符串作为参数


how to pass array string in JavaScript function from PHP end as a argument?

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