将PHP数组传递给Javascript

时间:2011-12-05 09:25:28

标签: php javascript

我试图将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子句来循环。

希望这更清楚。

2 个答案:

答案 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;客户转移:

  1. 创建您希望的纯客户端代码。让它起作用。把它保存到某个地方。
  2. 创建一个PHP代码以生成该客户端代码。
  3. 比较代码。如果不匹配 - 更正PHP代码。重复直到完成。