Выпадающий список автозаполнения пользовательского интерфейса jquery не отображается - PullRequest
1 голос
/ 28 августа 2011

Я использую автозаполнение пользовательского интерфейса jquery и по какой-то причине не могу понять, почему раскрывающийся список не отображается.Я перепробовал все, что мог придумать, но безуспешно ... Я надеюсь, что некоторые могут мне помочь.Firebug показывает правильный вывод JSON из моего PHP-скрипта.

При успешном оповещении (данных) отображаются: [объект Объект]

HTML-код

<select name=key1 id=key1>
  <option selected value="">CHOOSE ONE </option>
  <option value="allrecs">ALL RECORDS <</option>
  <option value="citnumb">CIT NUMBER <<option>
  <option value="sernumb">SERIAL NUMBER </option>
  <option value="model">MODEL </option>
</select>

<input type="text" size=30 name="qvalue" id="qvalue">

JQUERY скрипт

$("#qvalue").autocomplete(  
{
  source: function(request, response) 
  {
    $.ajax(
    {
      url: "jqsuggest2.php",
      type: "POST",
      dataType: "json",
      data:{term: request.term,searchkey:$('#key1').val()
    },
    success: function(data) 
    {
      alert(data);
      response( $.map( data, function(item) 
      {
         return 
         {
            value: item.term
         }
       }));
                }
        });
  },
  minLength: 2

});

PHP-скрипт

        $json = '[';
        $first = true;

        while($row = mysql_fetch_array($result)) 
        {
            if (!$first)
            { 
                $json .=  ','; 
            }
            else
            {
                $first = false; 
            }

            if ($searchkey == "citnumb")
            {
                $json .= '{"value":"'.$row['citnum'].'"}';
            }
            if ($searchkey == "sernumb")
            {
                $json .= '{"value":"'.$row['sernum'].'"}';
            }
            elseif ($searchkey == "model")
            {
                $json .= '{"value":"'.$row['model'].'"}';
            }

        }
        $json .= ']';
        echo $json;
        }

Вывод Firebug [{"value": "28225"}]

Любая помощь будет принята с благодарностью
Спасибо
Крис

Ответы [ 2 ]

0 голосов
/ 28 августа 2011

$.map используется для преобразования одного массива в другой. В контексте виджета автозаполнения он используется для преобразования исходного массива в массив в формате, который ожидает виджет автозаполнения.

В вашем случае, выглядит , как будто ваш php возвращает массив с объектами, структурированными так:

[{ "value": "1234"}, ... ]

Оказывается, это допустимый массив для использования автозаполнения. Вам не нужно никакой постобработки. Другими словами, это должно работать для вас:

$("#qvalue").autocomplete(  
{
  source: "jqsuggest2.php",
  minLength: 2
});

На самом деле, вы можете сократить ваш PHP, чтобы просто вернуть массив строк:

["1234", "4567", "89101"]

Который также является допустимым массивом для автозаполнения.

0 голосов
/ 28 августа 2011

Вам нужно иметь массив для опции source. Я полагаю, что если вы измените оператор return в функции карты, вы должны быть готовы к работе. Итак, измени

return 
{
    value: item.term
}

до

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