使用PHP动态生成JavaScript

时间:2015-01-23 20:34:46

标签: javascript php dynamic

我有一个运行良好的JavaScript代码:

var lookup = {
            "dog-black":{url:'images/dog-black.jpg'},
            "dog-white":{url:'images/dog-white.jpg'},
            "cat-black":{url:'images/cat-black.jpg'},
            "cat-white":{url:'images/cat-white.jpg'}
        };

我想使用PHP动态生成相同的代码,以便在数据库中创建相同的行,如下所示:

var lookup = {            
            <?php                   
                    $sql = "SELECT name FROM swords ORDER BY animals, colors";
                    $result = mysqli_query($conn, $sql);

                    if (mysqli_num_rows($result) > 0) {                            
                        while($row = mysqli_fetch_assoc($result)) {
                            echo '"'.$row['name'].'":{url:images/'.$row['name'].'.jpg';                                   
                        }
                    } else {echo "No records";}                    
            ?>
        };

我尝试使用引号或heredoc将php代码定义为字符串并提醒字符串变量,但似乎脚本不会被执行

注意:我已经在这部分代码之前连接到数据库并从/向它传递数据。

2 个答案:

答案 0 :(得分:1)

请勿尝试手动回复此问题。你可以做的是在PHP中构建相同的结构,然后使用json_encode

JSON实际上是有效的JavaScript代码,因此它可以工作。

试试这样:

<?php
    $lookup = array();

    $sql = "SELECT name FROM swords ORDER BY animals, colors";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
            $lookup[$row['name']] = array('url' => 'images/'.$row['name'].'.jpg');                              
        }
    }
    else {
        //echo "No records";
    }                    
?>

var lookup = <?=json_encode($lookup); ?>;

答案 1 :(得分:-2)

while循环中的echo似乎有错误。您没有正确关闭字符串,它缺少结束部分},。哪个应该是这样的:

echo '"'.$row['name'].'":{url:"images/'.$row['name'].'.jpg"},';