嵌入php和javascript的问题

时间:2013-06-09 18:53:25

标签: php javascript html

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

在chrome中检查时出现以下错误:

  

未捕获的SyntaxError:意外的标记<

此错误位于以下行

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分:1)

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

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

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

如果您愿意,可以这样:

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

答案 2 :(得分: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并按回车键,则应显示数据的本地化版本。