【发布时间】: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