Справка плагина drew's autoSuggest с результатами AJAX не отображается - PullRequest
0 голосов
/ 04 января 2011

Я некоторое время использую плагин drew autoSuggest, но до сих пор я жестко закодировал свои данные в свой JS, я пытаюсь выяснить, могу ли я использовать AJAX для возврата данных JSON и запроса данных таким образом. Кажется, у меня это работает, но что бы я ни пытался, я не могу отобразить результаты в выпадающем списке UL, который он создает с помощью jquery.

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 возвращает AJAX с содержимым JSON ... теперь просто чтобы выяснить, как заставить JS забрать его, добавить его в UL LI

UPDATE:

Я приложил данные к тестовому div и возвращаю их

results:[object Object],[object Object],[object Object]

1 Ответ

1 голос
/ 04 января 2011

Итак, если я правильно понял, вы получите ответ, который вы храните в переменной «results»?

Я предполагаю, что каждый из этих объектов содержит набор пар ключ / значение.Или, может быть, вложенные объекты?Было бы неплохо, если бы вы опубликовали ответ.Вы можете сделать это, открыв Firebug в Firefox (если вы установили это дополнение).Под «консолью» вы увидите ответ сервера.Откройте его, и вы увидите 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));

Не имея возможности проверить это, я думаю, что это может сработать.Конечно, в зависимости от того, как выглядит ваш ответ.Попробуйте и дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...