Возникли проблемы с автозаполнением jQuery UI - PullRequest
4 голосов
/ 26 января 2011

Я пытаюсь использовать новую функцию автозаполнения в пользовательском интерфейсе jQuery, но у меня возникают некоторые проблемы.

Я могу получить данные из БД (я вижу их в FireBug), но не могу отобразить выпадающий список (или предупредить данные).

Это мой код jQuery:

  jQuery('#brand_search').autocomplete({
            source: "http://mysite.com/wp-content/themes/storelocator/include/jquery.search.php?instance=brand",
            minLength: 2,
            delay: 50,
            select: function(e, ui) {
              alert(ui);
            }
        });

А это мой код PHP:

/* ------------------ Brand Autosuggest ------------------------- */
  function autosuggestBrand($dal)
  { 
    $result = $dal->getRowBySearch('sl_label','name', $this->term);   
    $brands = array();

    if(mysql_num_rows($result)>0) 
    {
      while($row = mysql_fetch_assoc($result)) 
      {
          array_push($brands, array(
            "id"      => $row['id'], 
            "name"    => html_entity_decode($row['name'], ENT_QUOTES, 'UTF-8') )
        );
      }     
    }
    echo json_encode($brands);          
  }

Я видел эти два руководства:
http://www.jensbits.com/2010/03/29/jquery-ui-autocomplete-widget-with-php-and-mysql
http://net.tutsplus.com/tutorials/javascript-ajax/how-to-use-the-jquery-ui-autocomplete-widget

Но все еще не могу понять, как отображать / предупреждать извлеченные данные.

Это результат echo json_encode

[
  {"id":"4642","name":"Mo Koshji"},
  {"id":"4627","name":"MO-A"},
  {"id":"4626","name":"MO'CYCLE"},
  {"id":"4628","name":"mo851"},
  {"id":"4629","name":"Mob Action"}
]

Ответы [ 2 ]

3 голосов
/ 27 января 2011

исправьте ваш массив php следующим образом, чтобы получить правильный вывод json для jquery-autocomplete:

array_push
(
   $brands,
   array
   (
      "label"  => $row['id'], 
      "value"  => html_entity_decode($row['name'], ENT_QUOTES, 'UTF-8') )
    );
);

, поскольку для автозаполнения jquery требуются имена этих свойств json для выполнения автозаполнения, как указано в документации:

Локальные данные могут быть простым массивом строк или содержит объекты для каждый элемент в массиве, либо с свойство label или value или оба. свойство label отображается в меню предложений.

http://jqueryui.com/demos/autocomplete/#custom-data

0 голосов
/ 27 января 2011

измените свой код на это (уберите его из обработчика события click):

jQuery(function()
{  
 jQuery('#brand_search').autocomplete({
        source: "http://mysite.com/wp-content/themes/storelocator/include/jquery.search.php?instance=brand",
             minLength: 2,
             delay: 50,
             select: function(e, ui) {
               alert(ui);
              }         
 }); 
});
...