从JSON文件创建javascript变量

Creating a javascript variable from an JSON file

本文关键字:变量 javascript 文件创建 JSON      更新时间:2023-09-26

我在index.php文件中有相同的php-var:

<?php
        $aoData = '
        { "name": "count", "value": "5" } ,
        { "name": "tbl", "value": "member" } ,
        { "name": "0", "value": "id" } ,
        { "name": "1", "value": "fname" } ,
        { "name": "2", "value": "lname" } ,
        { "name": "3", "value": "username" } ,
        { "name": "4", "value": "mail" }
        ';
        include("main.php");
?>

我需要在main.php中将这个php-var作为js函数参数发送,我使用的json如下:

<input type="button" onClick="run(<?php echo htmlentities(json_encode($aoData)); ?>)"

我需要在load.js中使用这个var作为参数。我的load.js是这样的:

function run(data1){
    var oTable =$('#example').dataTable( {
            aoData.push(**data1**)},
        "onblur" : "disable",
        "select" : true })}

但这种方式行不通。

看起来您的数据已经在主PHP文件中json_encode() ed了。您应该能够使用htmlentities()进行回显,以确保它是属性安全的。

所以run( <?php echo htmlentities( $aoData ); ?> )


需要注意的是,如果$aoData看起来像,那么您对json_encode()所做的操作将起作用

$aoData = array(
    array( 'name' => '', 'value' => '' ),
    array( 'name' => '', 'value' => '' ),
    array( 'name' => '', 'value' => '' ),
);

json_encode()获取一个数组/对象并将其转换为JSON,JSON是一个格式与$aoData当前类似的字符串。

您不应该在PHP中手工编写json。由此产生的潜在编码问题太多了。制作一个PHP数组,然后对其进行编码。

$aoData = array();
$aoData[] = array('name' => 'count', 'value => 5);
...
echo json_encode($aoData);

数据表函数需要两个参数。但是您要将一个变量传递给该函数
查看数据表及其输入类型的文档。

您可以在同一页面上的javascript函数its上直接使用php变量。

尝试提醒javascript参数检查自己您的json.encode处理不正确。您已经有了一个json字符串。那么为什么需要对进行编码

我实际上同意Tyler Carter的观点您应该使用PHP数组对JSON进行编码
以下示例是完全独立的,您可以在控制台中看到结果

<?php
$aoData = json_encode(array(
  array("name"  => "count", "value" => "5"),
    array("tbl" => "count", "value" => "member"),
    array("0"   => "count", "value" => "id"),
    array("1"   => "count", "value" => "fname"),
    array("2"   => "count", "value" => "lname"),
    array("3"   => "count", "value" => "username"),
    array("4"   => "count", "value" => "mail"),
));
?>
<html>
<body>
<input type="button" onclick="console.log(<?=htmlentities($aoData);?>)"  value="run"/>;
</body>
</html>