【问题标题】:How can I pass PHP/mysqli data into javascript? [duplicate]如何将 PHP/mysqli 数据传递到 javascript? [复制]
【发布时间】:2020-03-05 14:46:00
【问题描述】:

我正在开发一个包含地图标记列表的项目。我想将 php 数据库中的数据传递给地图的值。代码的映射部分使用 javascript。手动输入时,标记的 javascript 应如下所示:

    var locations = [
         [
          "Place 0",
          47.06330, -102.34702,
          0,
          "",
          "",
          "",
          ""],
         [
          "Place 2",
          -27.37025, 133.44892,
          1,
          "",
          "",
          "",
          "found"],
      ];

我尝试过使用 echo 语句。这是我尝试过的 mysqli 和 javascript 的组合...

    var locations = [
    <?php
        while($res = mysqli_fetch_array($result)) {
            echo "[";
            echo "'".$res['name']."',";
            echo "".$res['lat'].", ".$res['lng'].",";
            echo "".$res['id'].",";
            echo "'',";
            echo "'',";
            echo "'',";
            echo "''],";
        }
    ?>
    ];

它没有给我任何错误,但标记没有显示在地图上,所以它似乎没有工作。我在 html 代码的其他地方使用 mysqli 语句并且连接正确,所以我知道这不是问题。我看过其他几篇关于结合 php 和 javascript 的帖子,但我仍然不清楚如何解决这个问题。非常感谢任何指导!

【问题讨论】:

    标签: javascript php mysqli


    【解决方案1】:

    与其尝试直接输出Javascript结构,不如创建一个具有适当结构的PHP数组,然后输出json_encode($array)。在你的情况下:

    $locations = array();
    while($res = mysqli_fetch_assoc($result)) {
        $locations[] = array($res['name'], $res['lat'], $res['lng'], $res['id'], '', '', '', '');
    }
    echo "var location = " . json_encode($locations) . ";";
    

    【讨论】:

    • @YourCommonSense 投反对票是因为???
    • 我认为没有必要使用 mysqli_fetch_array,您只是检索关联值,因此 foreach($result as $res) 就足够了。
    • @Dharman 你是对的;我已更改为fetch_assoc。我个人不喜欢迭代mysqli_result 对象,因为我认为它会使代码让后来出现并查看它的人感到困惑。我个人偏好 OOP 表单 $res = $result-&gt;fetch_xxx(),但我希望我的答案与 OP 的用法保持一致
    • 太棒了!这就像一个魅力。非常感谢。
    • @D.W.不用担心 - 我很高兴能帮上忙。
    猜你喜欢
    • 2021-05-18
    • 2016-02-08
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    相关资源
    最近更新 更多