【问题标题】:Using data from database in Javascript with JSON在 Javascript 中通过 JSON 使用数据库中的数据
【发布时间】:2023-03-19 23:45:01
【问题描述】:

我想用 Javascript 显示我的数据库的一些数据。 这是我的 PHP 脚本:

$arrayDatabase =  array();
$statement = $link->prepare("SELECT project.ID, project.titel, project.subtitel, project.plaatje, project.beschrijving, project.link FROM project" );
$statement->execute();
$statement->bind_result($ID, $titel, $subtitel, $plaatje, $beschrijving, $site);
while($statement->fetch()){
    echo '
        <div class="singleProject" id="'.$ID.'">
            <img src="'.$plaatje.'" alt="'.$titel.'" />
            <div>
                <h2>'.$titel.'</h2>
                <div><p>'.$subtitel.'</p></div>
             </div>
        </div>
    ';
    $arrayRij= array($ID, $beschrijving, $site);
    array_push($arrayDatabase, $arrayRij);
}
$statement->close();

但如果我使用 json_encode 将数组转换为 Javascript,它将无法正常工作。

var jsArray = <? echo json_encode($arrayDatabase); ?>;

编辑:在我的浏览器中只有一个 ';'在 var jsArray =

之后

奇怪的是。如果我自己使用多维数组,例如:

$phpArray = array(array("foo", "bar"), array("foo", "bar"));

我的脚本有效。

【问题讨论】:

  • 尝试在单独的脚本中测试 javascript 并使用 ajax 调用来获取 json。
  • 请提供比“它不起作用”更好的问题描述。给我们一些有用的信息。

标签: javascript php json


【解决方案1】:

虽然我也认为你应该采用 AJAX 方式(或者在 php 中做任何你想做的事情并输出最终的 html 而不是在 js 中做东西),你可以通过这种方式解决你当前的问题:

json_encode 返回一个字符串而不是一个 javascript 对象,所以你需要在 js 中解析它才能得到真正的对象:

var jsArray = JSON.parse("<? echo json_encode($arrayDatabase); ?>");

请注意,您可能需要使用 JSON polyfill 才能在旧 ie 版本中工作。此外,您可能需要对从 json_encode 返回的字符串中的引号进行转义。

【讨论】:

  • json_encode 确实返回了一个字符串,但是它是直接注入到 JS 源代码中的,所以会被解释为 JS 数组或对象字面量。不需要JSON.parse
  • 真的。有那么一刻,我认为我可能会导致带有空格的键出现问题,但事实并非如此。
【解决方案2】:

您可以像这样从 php 获取 JSON 数据/对象到 javascript。

$arr = json_encode($arrayDatabase);
echo <<<END
  <script type="text/javascript">
    var jsArray = $arr;
  </script>
END;

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2014-09-18
    • 1970-01-01
    相关资源
    最近更新 更多