【问题标题】:Having problems with jQuery UI AutocompletejQuery UI 自动完成有问题
【发布时间】:2011-01-26 20:48:38
【问题描述】:

我正在尝试在 jQuery UI 中使用新的 autocomplete function,但遇到了一些问题。

我能够从数据库中检索数据(我可以在 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"}
]

【问题讨论】:

  • @Steven:当您输入带有自动完成小部件的输入时,您是否看到任何结果?
  • @Andrew Whitaker - 不,界面上什么都没有。但我确实通过 Firebug 看到 PHP 正在返回 JSON 结果。
  • 也许一文不值,但您是否尝试过提醒 ui.item.id 或 ui.item.name?因为默认的属性名称是标签和值
  • 尝试以这种格式生成结果:[ { "id": "the_id", "label": "the_label", "value": "the_value" } ]
  • @Steven:尝试将 PHP 中的 name 更改为 value

标签: jquery jquery-ui-autocomplete


【解决方案1】:

使用以下内容更正您的 php 数组,以便为​​ jquery-autocomplete 获得正确的 json 输出:

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

因为 jquery 自动完成需要这些 json 属性名称来运行文档中指定的自动完成:

本地数据可以是一个简单的Array 字符串,或者它包含对象 数组中的每个项目,其中一个 标签或值属性或两者兼而有之。这 标签属性显示在 建议菜单。

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

【讨论】:

  • 如果您只是说使用value 而不是name 会更容易;)
【解决方案2】:

将您的代码更改为此(将其从点击事件处理程序中取出):

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);
              }         
 }); 
});

【讨论】:

  • 将它包含在click 中来自使用自动完成插件的旧代码。将它移到外面点击不会改变任何东西 - 我试过了。
猜你喜欢
  • 2011-11-16
  • 2017-06-19
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多