jQuery自动完成显示空结果

我有这个PHP脚本来从我的数据库中获取所有患者姓名:

prepare($getPatients); $execGetPatients->bindValue(':cid', $cid); $execGetPatients->execute(); $getPatientsResult = $execGetPatients->fetchAll(); $i = 0; foreach($getPatientsResult as $result) { $res[$i] = $result; $i++; } echo json_encode($res); ?> 

我有一个文本框,我想使用jquery-ui自动完成库将patient_name显示为自动完成。

这是我的jQuery脚本:

  $(document).ready(function() { $( "#searchTxt" ).autocomplete({ source: "../php/autoComplete.php" }); }) 

我可以看到,如果在网络选项卡上键入一个名称,我可以看到返回的数组:

在此处输入图像描述

但是在文本框中我看到自动完成是空的,如下图所示:

在此处输入图像描述

它显示2个白色方框而不是返回数组的白色方框

对于那种结果,这是一个很好的插件: https : //twitter.github.io/typeahead.js/

我认为它是因为您传递的数据,似乎有多个列,您需要指定labelvalue或者它应该是简单数组(根据您的代码应该是这种数据)

 var availableTags = [ "ActionScript", "COBOL", "ColdFusion", ]; 

您可以查看有关自定义字段传递的更多信

Twitter typeahead.js是实现此function的最佳选择。

请使用PHPAJAXTypeAhead.js

  

链接到TypeAhead.js

如果您需要任何帮助,请告诉我。

因为你需要在你的json数组中提交标签和值,所以你的sql会是,

 $getPatients = "SELECT *, name as label, id as value FROM patient WHERE clinic_id = :cid ORDER BY patient_id DESC";