[英]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.