php - 将 PHP 数组传递给 Javascript

标签 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);

我一直在研究其他一些类似的问题,答案要么含糊不清,要么有几千个。

非常感谢任何帮助,也请尝试解释一下,就像您正在写一本名为“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/

相关文章:

php - 我如何获取、查看和更新​​存储在数据库中的复选框值

php - 如何计算处理图像所需的内存?

php - 如何从 URL 字符串中获取参数?

javascript - 跨子域使用 localStorage

javascript - 如何从另一组更大的按钮中单独更改一组按钮的颜色

php - mysql时间戳更新错误

javascript - 通过 JavaScript 将 php 变量传递到另一个 php 页面

javascript - Wolfram Alpha API JavaScript

javascript - 如何使用javascript格式化具有相同类的表列中的数据

javascript:默认情况下始终将函数中的第 n 个参数作为固定值传递