Typeahead Bloodhound,显示未定义的结果。错误的JSON类型?

时间:2015-03-16 14:27:24

标签: php jquery json typeahead bloodhound

我使用Typeahead制作自动填充搜索文本框,下拉结果显示为未定义。 显然PHP确实构建了JSON,我已经测试过了。问题可能是错误的JSON类型。 这是PHP:

$a_json = array();
$a_json_row = array();

while ($row = mysql_fetch_assoc($sql)) {

  //Replaces spaces for +
  $searchTerm = preg_replace('/\s/', '+', $row['products_keyword']);

  $a_json_row["search"] = $searchTerm;
  $a_json_row["label"] = $row['products_keyword'];
  array_push($a_json, $a_json_row);
}

echo json_encode ($a_json); //Return the JSON Array

以下是剧本:

$(document).ready(function() {
  var keywordsVar = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('label'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: 'keywords.php?query=%QUERY'

  });

  keywordsVar.initialize();
  $('#idkeywords').typeahead({
    hint: false,
    highlight: true,
    minLenght: 2
  }, {
    name: 'keywords',
    displaykey: 'label',
    source: keywordsVar.ttAdapter()
  });
});

以下是JSON的一个示例:

[{"search":"Artichokes","label":"Artichokes"},
{"search":"Artichokes+2","label":"Artichokes 2"},
{"search":"Artichokes+3","label":"Artichokes 3"}]

有人能发现问题吗?

1 个答案:

答案 0 :(得分:2)

你在先行声明中有拼写错误。它应该是displayKey,大写为k。

这是Reference