简体   繁体   English

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

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

I am getting the error missing ) after argument list in my Firebug console. 我在Firebug控制台中的参数列表后缺少)

emissing ) after argument http://a8.sphotos.ak.fbcdn.net/hphotos-ak-snc7/s720x720/393131_320846714645076_100001592501599_911297_470580896_n.jpg 在参数http://a8.sphotos.ak.fbcdn.net/hphotos-ak-snc7/s720x720/393131_320846714645076_100001592501599_911297_470580896_n.jpg

My question is how to pass $char_data variable in JavaScript function as a argument 我的问题是如何在JavaScript函数中将$ char_data变量作为参数传递

Define php variable: 定义php变量:

<?php 
$chart_data = "['NBA',1],['NFL',2],['MLB',3],['NHL',4]"; 
$div = "graph";
?

Call JavaScript function with define argument 使用define参数调用JavaScript函数

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

A function of JavaScript JavaScript的功能

<script>
function dynamicChartArray(div,chartdata){
var myData = new Array(chartdata);
var myChart = new JSChart(div, 'pie');
alert(chartdata+div);
}
<script>

Instead of 代替

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

Use 使用

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

Change your call to this: 将此更改为:

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

And function to this: 并对此起作用:

function dynamicChartArray(div,chartdata){
var myData = chartdata;
var myChart = new JSChart(div, 'pie');
alert(chartdata+div);
}
'<?php echo $chartdata;?>'

This is going to echo '['NBA',1],['NFL',2],['MLB',3],['NHL',4]' . 这将回显'['NBA',1],['NFL',2],['MLB',3],['NHL',4]' Note how there are single quotes inside the single quotes. 注意单引号内如何有单引号。

 new Array(chartdata)

This will just make an array, with one element, the string "['NBA',1],['NFL',2],['MLB',3],['NHL',4]" . 这将只是一个带有一个元素的字符串"['NBA',1],['NFL',2],['MLB',3],['NHL',4]"组成的数组。

Try doing dynamicChartArray('<?php echo $div;?>',[<?php echo $chartdata;?>]) 尝试做dynamicChartArray('<?php echo $div;?>',[<?php echo $chartdata;?>])

This will make chartdata an array of arrays. 这将使chartdata成为数组的数组。

Rather than creating an array out of a string in javascript, why not just just get the PHP to output it as an array to start with? 除了使用JavaScript在字符串中创建数组之外,为什么不仅仅让PHP将其作为数组输出呢?

Just add an extra set of [] which javascript reads as an array. 只需添加一组额外的[]即可将javascript读取为数组。

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

then ditch the quotes on the output (which are responsible for causing the error messages) 然后在输出上引号(引起错误消息的原因)

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

and then myData can just equal chart data (since its already an array) 然后myData可以等于图表数据(因为它已经是数组)

var myData = chartdata;

change this: 改变这个:

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

to this: 对此:

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

and see if it works 看看是否可行

You dont need var myData = new Array(chartdata); 您不需要var myData = new Array(chartdata); .

chartdata is already an array. chartdata已经是一个数组。

Take a look at json_encode . 看看json_encode

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

which will produce a json string ready to echo into your script 这将产生一个准备回显到脚本中的json字符串

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

You should have a look at the output. 您应该看一下输出。 I bet it is: 我敢打赌:

dynamicChartArray('graph','['NBA',1],['NFL',2],['MLB',3],['NHL',4]')

and you can already see that you have problems with the quotes. 并且您已经看到报价存在问题。

Instead of creating a string, I suggest to create an array and use json_encode : 建议不要创建字符串,而是创建一个数组并使用json_encode

$chart_data = array(
    array('NBA',1),
    array('NFL',2),
    array('MLB',3),
    array('NHL',4)
);

and

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

JSON happens to be valid JavaScript as well and it gives you more possibilities to process the data on the server side. JSON恰好也是有效的JavaScript,它为您提供了更多在服务器端处理数据的可能性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM