我有一个PHP文件用于显示HTML并从数据库中获取数据,我想在页面加载时获取数据,将其存储在javascript数组中,然后通过onchange事件访问它。数据库已经过测试并且有效但是我在从PHP到JS获取数据时遇到了问题,我已经阅读了所有其他主题,但这些建议似乎都没有帮助。
在chrome中检查时出现以下错误:
未捕获的SyntaxError:意外的标记<
此错误位于以下行
var myAge = <?php echo json_encode($phpAge); ?>;
我希望解释一下,如果需要,我可以发布所有代码。
答案 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
并按回车键,则应显示数据的本地化版本。