使用远程数据源的JQuery自动完成

时间:2017-04-03 15:48:35

标签: jquery autocomplete

我遇到了使用远程数据源的JQuery Autocomplete问题。我看到每次开始输入都有请求,但是,我没有得到任何可见的JQuery输出。有人可以帮忙吗?

perfomrs搜索的代码:

 $term=$_GET['term'];
 $query = "SELECT Items.ItemID, Items.ItemCode, Items.ItemDescription FROM     
 Items WHERE Items.ItemCode LIKE '%$term%' ";
 $stmt = $db->prepare($query);
 $stmt->execute();
 $stmt->store_result();
 $numrows = $stmt->num_rows;
 $stmt->bind_result($ItemID, $ItemCode, $ItemDescription);

 for ($i=0; $i <$numrows; $i++) {
         $stmt->fetch();

     $arr[] = array(
             "value" => strval($ItemCode),
             "label" => strval($ItemDescription)
   );
 }
     header("Content-Type", "application/json");
     echo json_encode($arr);

我得到以下JSON输出:

[{"value":"1085","label":"Item1"},{"value":"2089","label":"Item2"}]

我有以下JQuery代码:

<script>
  $( function() {
    function log( message ) {
      $( "<div>" ).text( message ).prependTo( "#log" );
      $( "#log" ).scrollTop( 0 );
    }

    $( "#items" ).autocomplete({
      source: function( request, response ) {
        $.ajax( {
          url: "../items-search.php",
          dataType: "jsonp",
          data: {
            term: request.term
          },
          success: function( data ) {
            response( data );
          }
        } );
      },
      minLength: 1,
      select: function( event, ui ) {
        log( "Selected Item: " + ui.item.value   );
      }
    } );
  } );
  </script> 

div的HTML:

  <div>
  <label for="items">Item: </label>
  <input id="items">
</div>

<div>
  Result:
  <div id="log"></div>
</div>

2 个答案:

答案 0 :(得分:0)

在您的HTML中,您的ID为birds,但无法识别items。您是否有可能复制了jQuery UI示例并忘记更改它? : - )

答案 1 :(得分:0)

我实际上是靠自己想出来的。我将jsonp更改为json并且有效。