我使用了drew的autoSuggest插件已有一段时间了,但到目前为止我已经将我的数据硬编码到我的JS中,我试图看看我是否可以使用AJAX来返回JSON数据并查询这样的数据。我似乎有它工作,但无论我尝试什么,我都无法将结果显示在它通过jquery创建的下拉UL中。
JSON应该回来了。这是我的PHP代码:
$input = $_GET["q"];
$data = array();
// query your DataBase here looking for a match to $input
$query = mysql_query("SELECT `state`, `idStates` FROM `states_list` WHERE (`state` LIKE '%{$input}%' OR `abbr` LIKE '%{$input}%')");
while ($row = mysql_fetch_assoc($query)) {
$json = array();
$json['value'] = $row['idStates'];
$json['name'] = $row['state'];
$data[] = $json;
}
header("Content-type: application/json");
echo json_encode($data);
和我的JS:
$('#state').autoSuggest('resources/ajax/suggest.php', {matchCase: true, minChars: 2, startText: '', emptyText: '', retrieveComplete: function(data){ console.log(data.value) }});
我一直在尝试调试,所以我在那里添加了retrieveComplete参数。
PHP返回带有JSON内容的AJAX ......现在只是想弄清楚如何让它把它拿起来附加到UL LI
更新:
我将数据附加到测试div并返回
results:[object Object],[object Object],[object Object]
答案 0 :(得分:1)
所以,如果我做对了,你会得到一个存储在变量“results”中的响应吗?
我假设这些对象都包含一组键/值对。或者也许是嵌套对象?如果您发布了回复,那就太好了。你可以通过在Firefox中打开Firebug来实现这一点(如果你已经安装了这个添加)。在“控制台”下,您将看到服务器响应。打开它,你会看到4个标签。打开名为JSON的选项卡。右键单击它选择“复制响应主体”。然后将其粘贴到此处。
有几种方法可以解决这个问题。这是其中之一:
var liStr = '',
$yourUl = $('#id-of-your-ul');
// Assuming the response object is stored in the variable data
for (key in data) {
liStr += '<li>Your key: ' + key + ', Your key value: ' + data[key] + '</li>';
}
$yourUl.append($(liStr));
无法测试它,我认为它可能会起作用。当然取决于你的回答是什么样的。试试吧,让我知道。