使用PHP运行查询并将其放在javascript对象中

时间:2013-02-09 01:28:02

标签: php javascript oracle

我正在尝试使用PHP运行存储过程。我想将查询的结果放入一个javascript对象。我找不到如何做到这一点。我已经运行了这段代码但是我收到的结果之一是未定义的。这是我的代码:

$result = mysql_query("call sp_getGenre()");
    if($result === FALSE){
            die(mysql_error());
        }
        while($row = mysql_fetch_array($result)){
    ?>
            <script type="text/javascript">
                console.log(<? $row['Type'] ?>);
                var genreObj = new Object();
                genreObj.name = "<? echo $row['Type'] ?>";
                genreObj.level = <? echo $row['Level'] ?>;
    <?
                $parentID = $row['PrevID'];
                if($parent == null){ $parent = "0"; }
    ?>
                genreObj.parent = <? $parent ?>;
                arrGenre.push(genreObj);
            </script>
    <?
        }
    ?>

我是PHP世界的新手,但我会非常欣赏正确方向的一点。提前谢谢。

3 个答案:

答案 0 :(得分:3)

在PHP中构建一个类似于您想要的JavaScript对象的关联数组,然后使用json_encode()将其转换为JSON对象,然后您可以轻松地传递给JavaScript。

您甚至可以执行以下操作:

<?php
// stuff
$resultObj = json_encode($row);
?>

<script type="text/javascript">
var genreObj = <?= $resultObj ?>;
</script>

这不应该是你问题的完美解决方案,但希望它会给你一些想法。

答案 1 :(得分:1)

我认为

<? $row['Type'] ?>

应该是

<?= $row['Type'] ?> or
<? echo $row['Type'] ?>

同样适用于

<? $parent ?>;

答案 2 :(得分:0)

下面的代码没有经过全面测试,但基本的想法是将所有值写入数组,然后将该数组转换为json对象。从那里将json对象分配给jsonresults变量。现在,您可以通过javascript获取所需的所有信息。

<?php


$result = mysql_query("call sp_getGenre()");
if($result === FALSE){
    die(mysql_error());
}
while($row = mysql_fetch_array($result)){
    $resultsarray = array("type"=> $row['type'], "level" => $row['Level'}, "previd" => $row['PrevID']);
    $jsonifiedresults = json_encode($resultsarray);
    ?>
            <script type="text/javascript">
                jsonresult = <? echo $jsonifiedresults; ?>;

                console.log(jsonresult.type);
                var genreObj = new Object();
                genreObj.name = jsonresult.type;
                genreObj.level = jsonresult.level;
                genreObj.parent = jsonreult.prevID;
                arrGenre.push(genreObj);
            </script>
<?php
        }
?>