0

我有一个 PHP 文件,用于显示 HTML 并从数据库中获取数据,我想在页面加载时获取数据,将其存储在 javascript 数组中,然后稍后通过 onchange 事件访问它。该数据库已经过测试并且可以正常工作,但是我在将数据从 PHP 获取到 JS 时遇到问题,我已经阅读了所有其他主题,但这些建议似乎都没有帮助。

这是在chrome中检查时的错误:

未捕获的 SyntaxError:意外的令牌 <

此错误位于以下行

var myAge = <?php echo json_encode($phpAge); ?>;

我希望解释一切,如果需要,我可以发布所有代码。

4

3 回答 3

1

如果你想从 PHP 获取数据到 JavaScript,你需要正确地转义它。最好的方法是使用json_encode().

<?php
$data = array('someKey' => 'someValue');
echo 'var data = ', json_encode($data), ';';

此脚本的输出将是有效的 JavaScript。

var data = {"someKey": "someValue"};

另请注意,如果您希望将 JavaScript 文件作为 PHP 处理,则需要配置您的服务器以执行此操作。

于 2013-06-09T19:07:17.897 回答
1

您不能简单地在 JavaScript 代码中间转储一个序列化的 JSON 字符串并假设它可以工作。它必须声明为正确的字符串,并在其周围加上引号、转义符号等。

这样做的正确方法更像是这样:

<?php
    echo "var data = \"" . addslashes(json_encode($phpAge)) . "\";\r\n";
?>

或者如果您愿意,可以这样:

var myAge = "<?php echo addslashes(json_encode($phpAge)); ?>";
于 2013-06-09T22:23:31.470 回答
0

如果您使用的是 mysqli,也许这样的东西会对您有所帮助?

<script type="text/javascript">
    <?php
        $mysqli = new mysqli('hostname', 'username', 'password', 'database');
        $res = $mysqli->query('SELECT * FROM table_name');
        $data = array();
        while($fld = $res->fetch_assoc()) { $data[] = $fld; }
        echo('var data = ' . json_encode($data) . ';');
    ?>
</script>

如果您随后转到控制台(Chrome 中的 F12)并输入data并按回车,它应该会显示您的数据的本地化版本。

于 2013-06-09T21:26:18.967 回答