来自php vars的jquery自动完成

时间:2013-12-09 13:27:34

标签: php jquery mysql jquery-ui-autocomplete

<?php require_once('Connections/root.php'); ?> 
<?php $q = mysql_query("SELECT * FROM performer"); ?> 

<script> $(document).ready(function () {
    $(function() {
        var availableTags = ["<?php while($r = mysql_fetch_assoc($q)) { echo $r['username']; } ?>"];
        $("#search_box").autocomplete({
            source: availableTags
        });
    });
});
</script>

脚本有效,但显示:User1User2User3

我希望它显示:

用户1

用户2

用户3

如何在每个用户后添加新行以及在何处添加换行符

如果我这样做

var availableTags = ["<?php while($r = mysql_fetch_assoc($q)) { echo $r['username'] . " <br />"; } ?>"];

我得到User1User2User3,br为字符串

3 个答案:

答案 0 :(得分:4)

将您的PHP逻辑与您的Javascript代码分开。在顶部,首先构建一个PHP数组:

$tags = array();
while($r = mysql_fetch_assoc($q)) { 
    $tags[] = $r['username'];
}

然后在你的javascript中,回显数组JSON encoded

var availableTags = <?php echo json_encode($tags); ?>;

注意:您使用的是已弃用的mysql_*函数,应切换为mysqli_*PDO

答案 1 :(得分:0)

如上所述,您的availableTags数组只有1个字符串变量。 您需要将字符串推送到数组。

你可以试试这个:

var availableTags = [];
<?php while($r = mysql_fetch_assoc($q)) { ?>
    availableTags.push('<?php echo $r['username']; ?>');
<?php } ?>

答案 2 :(得分:0)

生成的js数组不是您所期望的。使用您的代码,您将获得

var availableTags = ["User1User2User3"]; 

而你需要的是

var availableTags = ["User1", "User2", "User3"];

Yous应该调整您的PHP代码以生成正确的JS。