繁体   English   中英

脚本类型=“ text / javascript”变量无法捕获PHP回显的JSON

[英]Script type=“text/javascript” variable not catching PHP echoed JSON

我正在开发一个PHP Web应用程序,该应用程序从MYSQL数据库检索数据负载,然后使用PHP的json_encode将关联数组转换为JSON。

<script type="text/javascript">
    var json = <?php
    // get loads of data from MYSQL database, store in $array
    echo(json_encode($array));
    ?>;
</script>

以前似乎可以正常工作,但是现在在chrome中按F12键并检查控制台时,JavaScript抛出错误,因为它无法识别<?php的开头<。

我发现,如果我从脚本标记中删除type =“ text / javascript”,它会正常运行。

编辑:

如果我使用以下方法,它将起作用:

<script>
    var json = <?php
    // get loads of data from MYSQL database, store in $array
    echo(json_encode($array));
    ?>;
</script>

似乎在script标签中添加类型会阻止PHP在发送给客户端设备之前执行。

为什么是这样?

如果您使用以下标签,则该标签实际上可以用于运行PHP代码:

<script language="php"> echo("hello"); </script>

我假设在script标记中设置类型会使其仅评估标记中的一种​​语言-保留该类型而无需保留类型则使其保留多语言脚本标记。

资料来源: http : //php.about.com/od/advancedphp/qt/mixed_scripting.htm

因此,使用类似

<script>
var json = <?php
echo($var);
?>;
</script>

将评估两种语言(显然是PHP服务器端),但是在script标记中设置类型或语言将阻止评估标记中的其他语言/类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM