【问题标题】:AJAX Autocomplete from an SQL table?SQL表中的AJAX自动完成?
【发布时间】:2017-04-18 08:52:07
【问题描述】:

嗨。

我如何能够根据 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?”

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

【问题讨论】:

  • php 代码在 javascript 代码中的确切位置?
  • 去掉
    标签
  • 假设您使用的是 jquery UI 自动完成包?您不能“从 JS 数组中的 SQL 查询中回显 PHP”。您可以使用 JS 向 URL 发出请求,该 URL 将返回 JSON 数据以在您的自动完成器中使用。
  • @jcorry,那不正确。当然可以。
  • 哦,对了……人们仍然在他们的页面中嵌入 PHP。那么最好的选择是从查询中获取结果并对其进行 json_encode。 var avaliableTags = &lt;?= json_encode(array_values($result-&gt;fetch_assoc())); ?&gt;;

标签: php jquery mysql ajax autocomplete


【解决方案1】:

看来你让事情变得复杂了。这里只需要将 PHP 数组放在 JS 变量中即可。

所以,

var usernames = &lt;?= json_encode($arr) ?&gt;;

var usernames = &lt;?php echo json_encode($arr) ?&gt;;

会好的。

<?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>

希望您得到解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-02
    • 2013-02-27
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    相关资源
    最近更新 更多