我试图将PHP函数中的值数组传递给Javascript。不确定我是否正确地做到了。
PHP:
function toggleLayers(){
for($i=0;$i<$group_layer_row;$i++){
$toggleArray=mb_convert_encoding(mssql_result ($rs_group_layer, $i, 0),"UTF-8","SJIS")."_".mb_convert_encoding(mssql_result ($rs_group_layer, $i, 1),"UTF-8","SJIS");
return $toggleArray;
}
}
JS:
var myArray = [JSON.parse("<?php echo json_encode($toggleArray); ?>")];
for(var i=0;i < myArray.length; i++){
if($myArray.getVisibility()==true){
$myArray.getVisibility(false);
}
else{
$myArray.getVisibility(true);
}
}
SQL(供参考):
$con = mssql_connect("myServer", "myUsername", myPassword");
$sql = "SELECT * FROM m_group_layer WHERE group_id=\"".$_SESSION["group_id"]."\" ORDER BY display_order";
$rs_group_layer = mssql_query ($sql, $con);
$group_layer_row = mssql_num_rows($rs_group_layer);
我一直在寻找其他类似的问题,答案要么含糊不清,要么有几千个。
感谢任何帮助,也请尝试解释,好像你正在写一本名为“白痴将PHP数组传递给JS的指南”
感谢您的帮助。
修改
抱歉,我的问题很模糊。这就是我想要做的事情:
1.PHP函数获取从表到数组的所有记录(在这种情况下,它们是地图图层)
2.Javascript接收PHP数组并通过在切换图层中添加if子句来循环。
希望这更清楚。
答案 0 :(得分:2)
这比你想象的要简单。
更改此行:
var myArray = [JSON.parse("<?php echo json_encode($toggleArray); ?>")];
只是:
var myArray = <?php echo htmlspecialchars(json_encode($toggleArray), ENT_NOQUOTES); ?>;
json_encode
生成一个json字符串。将字符串回显到javascript上下文相当于javascript文字。 htmlspecialchars
仅用于必要的html转义,并不是回显json的唯一。
注意但是你只能json_encode一个php对象或数组,而不是任何标量类型,如整数或字符串。这是JSON本身的限制。在toggleLayers()
函数中,您将返回一个字符串,而不是一个数组。
答案 1 :(得分:-5)
理解非常有用的东西:
你只需不能“将PHP函数中的值数组传递给Javascript”。
但您必须使用PHP 创建javascript代码,就像创建HTML一样。
因此,用PHP解决任何问题的3个简单步骤 - &gt;客户转移: