脚本类型=" text / javascript"变量没有捕获PHP回显JSON

时间:2014-11-10 16:21:08

标签: javascript php mysql 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会抛出一个错误,因为它没有识别开头&lt;在<?php

我发现如果我删除了类型=&#34; text / javascript&#34;从脚本标签,它读得很好。

编辑:

如果我使用以下内容,则可以:

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

似乎在脚本标记中添加一个类型会阻止PHP在发送到客户端设备之前执行。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

如果使用:

,似乎标签实际上可用于运行PHP代码

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

我假设在脚本标记中设置类型使得它只评估标记中的单一语言 - 如果没有类型,则保留它不会保留多语言脚本标记。

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

因此,使用

之类的东西
<script>
var json = <?php
echo($var);
?>;
</script>

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