2016-12-03 63 views
1

嗨。AJAX从SQL表自动完成?

我如何能够根据来自SQL表的信息自动完成输入?

我曾尝试:

[CSS] 
    [JQUERY] 
    <script> 
$(function() { 
var availableTags = [ 
<?php 
    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
     echo '"'.$row["user_username"].'",'; 
     } 
    } 
?> 
    ]; 
    $("#tags").autocomplete({ 
    source: availableTags 
    }); 
}); 
    </script> 


<div class="ui-widget"> 
    <label for="tags">Tags: </label> 
    <input id="tags"> 
</div> 

这个工作,但是当我尝试添加:

$sql = "SELECT username FROM table"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     echo '"'.$row["username"].'",<br>'; 
    } 
} 

而不是 “用户名1” 等的JS名单,也不会工作。

如何使用PHP选择自动填充语句列表(用户名1,用户名2等)的用户名?

这可以改写为“我如何从JS数组中的SQL查询回应PHP?”

任何帮助将不胜感激。谢谢。

+0

''''代码里''''代码''''' – Dekel

+0

假设您使用jQuery UI自动完成包,请删除
标记 – axlj

+0

?你不能'从JS数组中的SQL查询中回应PHP'。您可以使用JS向URL发出请求,该URL将返回JSON数据以供您的自动完成器使用。 – jcorry

回答

0

看来你让它变得复杂。这里您只需要将PHP数组放在JS变量中。

所以,

var usernames = <?= json_encode($arr) ?>;

var usernames = <?php echo json_encode($arr) ?>;

就可以了。

<?php 

    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      $usernames[] = $row["user_username"]; 
     } 
    } 

?> 

<script> 
    var usernames = <?= json_encode($usernames); ?> 
    $("#tags").autocomplete({ 
     source: usernames 
    }); 
</script> 

希望你有解决办法。