我正在尝试将一组值从 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);
我一直在研究其他一些类似的问题,答案要么含糊不清,要么有几千个。
非常感谢任何帮助,也请尝试解释一下,就像您正在写一本名为“Idiot's Guide to Passing PHP Arrays to JS”的书一样
感谢您的帮助。
编辑:
抱歉,我的问题很模糊。这就是我正在尝试做的事情:
1.PHP函数将表中的所有记录获取到数组中(在本例中它们是 map 图层)
2.Javascript接收PHP数组并通过添加if子句循环切换图层。
希望这能让事情变得更清楚。
最佳答案
比你想象的要简单。
更改此行:
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 所独有的。
注意但是,您只能对 php 对象或数组进行 json_encode,而不能对任何标量类型(如整数或字符串)进行 json_encode。这是 JSON 本身的限制。在您的 toggleLayers()
函数中,您返回的是一个字符串,而不是一个数组。
关于php - 将 PHP 数组传递给 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8383181/