drew的autoSuggest插件帮助没有显示AJAX结果

时间:2011-01-04 08:14:52

标签: javascript jquery json

我使用了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]

1 个答案:

答案 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));

无法测试它,我认为它可能会起作用。当然取决于你的回答是什么样的。试试吧,让我知道。

相关问题