如何使自动完成Jquery UI插件动态化

时间:2016-01-17 04:05:24

标签: javascript jquery jquery-ui autocomplete

我正在使用here中的Jquery UI自动完成插件。问题是,如何将动态内容插入自动完成?这就是我尝试过的:

<?php

  $db2 = new mysqli("127.0.0.1", "root", "", "crave crap");
  $one_grab = $db2->query("SELECT * FROM movies");

  echo '<script>
  $(function() {
    var availableTags = [
    </script>';

    while($two_row = mysqli_fetch_array($one_grab)) {
    echo $two_row["title"];
  }

      echo '"ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];
    $("#delete_movie").autocomplete({
      source: availableTags
    });
  });
  </script>';

  ?>

请假设Jquery&amp; Jquery UI正确链接...为了进一步说明,我有一个连接到SQL查询的while循环。我试图将它附加到自动完成内容,但这不起作用。使用Jquery UI自动完成插件执行此操作的正确方法是什么?

  

编辑@Vijay Arun

     

这是您发布的代码:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery UI Autocomplete - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css">

  <?php

  $db2 = new mysqli("127.0.0.1", "root", "", "crave crap");
  $one_grab = $db2->query("SELECT * FROM movies");

 while($two_row = mysqli_fetch_array($one_grab)) {
    $data[] = $two_row["title"];
  }

  ?>
  <script>
  $(function() {
    var availableTags = "<?php echo json_encode($data); ?>";
    $("#delete_movie").autocomplete({
      source: JSON.parse(availableTags)
    });
  });
  </script>

</head>
<body>

<div class="ui-widget">
  <input id="delete_movie" name="delete_movie" required>
</div>


</body>
</html>
  

这看起来是否正确?如果是这样,代码仍然无效...

2 个答案:

答案 0 :(得分:0)

echo json_encode()

使用http://php.net/manual/en/function.explode.php示例,php
$("#delete_movie").autocomplete({
  source: function( request, response ) {
    $.ajax({
      url: "/path/to/php",
      dataType: "json",
      data: {
        q: request.term
      },
      success: function( data ) {
        response( data );
      }
    });
 })

答案 1 :(得分:0)

你需要两个单独的文件, index.phpsuggest.php

index.php

<div class="ui-widget">
   <input id="delete_movie" name="delete_movie" required>
</div>
<script>
$(function() {
    $( "#delete_movie" ).autocomplete({
        source: "suggest.php"   
    });
</script>

suggest.php

<?php
    $db2 = new mysqli("127.0.0.1", "root", "", "crave crap");
    $one_grab = $db2->query("SELECT * FROM movies WHERE title LIKE '%{$_GET['term']}%' ");
    while($two_row = mysqli_fetch_array($one_grab)) {
       $data[] = $two_row["title"];
    }
    echo json_encode( $data );
相关问题