【发布时间】:2014-01-30 19:58:21
【问题描述】:
使用 jQueryUI 自动完成功能搜索 MySQL 数据库。当用户在搜索字段中按下回车键时,我想用从 DB 返回的结果填充一个 div。
代码有效并且确实返回了一个自动完成的建议列表。
但是,select: 函数中返回的 JSON 数据不是我所期望的。
在下面的 PHP 代码示例中,查询从数据库中请求与查询匹配的每个标题相关的所有字段。应该还有其他字段,例如作者、出价、isbn、流派等。但是,只返回了 title 字段。
Google Chrome 的控制台如下所示:
Object {item: Object}
item: Object
label: "Much Obliged Jeeves"
value: "Much Obliged Jeeves"
__proto__: Object
Object {label: "Much Obliged Jeeves", value: "Much Obliged Jeeves"}
其他字段在哪里?
我的 jQuery:
$('#srxbks').autocomplete({
source: "autocomplete_test.php",
minLength: 1,
select: function( event, ui ) {
console.log(ui);
console.log(ui.item);
console.log(ui.item.label);
//Not working:
var out = 'Title: ' + ui.item.title + '<br>';
out += 'Author: ' + ui.item.author + '<br>';
$('.booksTableDIV').val(out);
}
});
我的 PHP:
<?php
include 'connect.php';
$term = strip_tags($_GET['term']);//retrieve search term sent by autocomplete
$qstring = "SELECT * FROM `books` WHERE `title` LIKE '%" .$term. "%'";
$query = mysql_query($qstring) or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
$row['title']=htmlentities(stripslashes($row['title']));
$row['bid']=(int)$row['bid'];
$row_set[] = $row['title'];
}
echo json_encode($row_set);
【问题讨论】:
-
虽然对象中只有标签和值属性。还是我错过了什么?
-
你的PHP只输出title变量而不是bid变量。