【问题标题】:Typeahead Bloodhound, showing results as undefined. Wrong JSON type?Typeahead Bloodhound,将结果显示为未定义。错误的 JSON 类型?
【发布时间】:2015-03-16 14:27:23
【问题描述】:

我正在使用 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"}]

谁能发现问题??

【问题讨论】:

  • 在您打开<?php标签后将错误报告添加到文件顶部:error_reporting(E_ALL); ini_set('display_errors', 1);
  • echo json_encode ($a_json); //Return the JSON Array - 错误,它返回一个对象的 json。 json_encode ($a_json, true); 返回数组的json
  • 不是php错误,我想这与我返回的内容有关(对象,数组?)
  • a_json的结构是什么?它看起来怎样?请将其添加到问题中

标签: php jquery json typeahead bloodhound


【解决方案1】:

您在 typeahead 声明中有错字。它应该是displayKey,带有大写的k。

这是Reference

【讨论】:

  • 哈哈,就是这样。半天就扔了!谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2015-09-30
相关资源
最近更新 更多