jquery autocomplete,如何填充到HTML

时间:2016-06-30 18:53:55

标签: php jquery html ajax autocomplete

我正在尝试让HTML显示自动完成ajax查询返回的建议。我试图找到这方面的教程,但没有人真正解释数据是如何从php发送到jquery然后再发送到HTML的JSON。

php函数:

function autoCompany($keyword){
global $DBH;


$stmt = "SELECT companyID, companyName FROM Company WHERE companyName LIKE '%' ? '%'";

try{
    $STH = $DBH->prepare($stmt);
    $STH->bindParam(1, $keyword);
    $STH->execute();

    if($STH->RowCount() > 0){

            $suggestions = array(); 
        while($row = $STH->fetch()){
            $suggestions[] = array(
            "label" => $row['companyName'],
            "value" => $row['companyID']
            );
        }

        echo json_encode(array('suggestion' => $suggestions));
    }else{
        echo 'failed';
    }

}catch(Exception $e){
  echo $e->getMessage() . "autoCompany";
}
}

我知道数据正在正确发送:

suggestion: [{value:Test Company, data:1}, {value:Testing Test, data:4}]
 0: {value:Test Company, data:1}
 1: {value:Testing Test, data:4}

但是如何在下拉列表中输出数据呢?

我的HTML:

<div class="form-group">
  <label class="control-label col-md-3 col-sm-3 col-xs-12">AutoComplete</label>
<div class="col-md-6 col-sm-6 col-xs-12">
   <input type="text" name="country" id="autocomplete" class="form-control col-md-10" style="float: left;" />
   <div class="autocomplete-suggestions">
       <div class="autocomplete-suggestion autocomplete-selected">...</div>
       <div class="autocomplete-suggestion">...</div>
       <div class="autocomplete-suggestion">...</div>
   </div>
</div>
</div>

我的自动填充jquery:

$('#autocomplete').autocomplete({
  serviceUrl: 'Admin/ajax.admin.php',
  paramName: "autoCompany",
  type: "POST",
  dataType: "json",
  onSelect: function (suggestion) {
      alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
  }success: function (data) {
  response($.map(data.d, function (i) {
      return {
          //From Here to DDL?
      }
     }))
  },
 });

1 个答案:

答案 0 :(得分:0)

如果你在寻找它来填充它自己创建的下拉列表,你需要像这样映射你的JSON数据。

response($.map(data.d, function (i) {
      return {
          label: i.value,
          value: i.data
      }
}