将多维数组从mysql传输到php到javascript

时间:2016-02-18 00:42:14

标签: javascript php mysql arrays multidimensional-array

我似乎遇到了一些麻烦。 PHP部分似乎运行良好,但我似乎无法将信息传递给JS部分。这是我现在拥有的:

<!DOCTYPE html>
<html> 
  <body>
    <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    mysql_connect($servername, $username, $password) or die(mysql_error());
    mysql_select_db("stuff") or die(mysql_error());
    $result = mysql_query("SELECT Location, Latitude, Longitude FROM Places WHERE Latitude IS NOT NULL GROUP BY Location, Latitude, Longitude");
    $places = array();
    while (($row = mysql_fetch_array($result, MYSQL_NUM)) !== false) {
        $places[] = $row;
    }
    ?>
    <script>
    function makeTableHTML(myArray) {
        var result = "<table border=1>";
        for(var i=0; i<myArray.length; i++) {
            result += "<tr>";
            for(var j=0; j<myArray[i].length; j++){
                result += "<td>"+myArray[i][j]+"</td>";
            }
             result += "</tr>";
        }
    result += "</table>";
    return result;
    }
    var places = "<?php echo json_encode($places) ?>";
    makeTableHTML(places);
    </script>
  </body>
</html>

我已经测试了PHP部分,它运行得很好。我是JS的新手,我不知道如何进行测试/调试。任何帮助将不胜感激。

我在这里找到了makeTableHTML函数,希望它会有所帮助,但我没有运气。

1 个答案:

答案 0 :(得分:1)

您的PHP似乎正在运行。你的javascrip HTML代码生成似乎还可以。但你不是把表写入DOM的地方。

因此,您必须选择一个DOM元素并将makeTableHTML的结果写入其中。 例如:

document.getElementsByTagName("BODY")[0].innerHTML += makeTableHTML(places);

在您的代码示例中,直接使用PHP生成表更有意义。只有当您想动态更改网站时,Javascript才有意义。

我不知道你在这里想要什么,但也许你应该研究ajax请求。但很难说,不知道你想要创造什么。

您还询问了如何调试javascript,当然您可以使用alert()输出代码中的任何变量。但在更复杂的情况下,建议使用调试器。有关如何在Firefox中使用它,请参阅here