2015-02-07 127 views
1

我想在选择中实现远程源。选择不显示搜索结果

我正在从api访问数据。格式如下:

concept_id,name 
228,Pelecypoda 
286,Pelecypoda 

当我尝试在安慰项渲染,它不会安慰。但是,当我成功地进行安慰时,数据被安慰了。

$('#search_text').selectize({ 
    theme: 'name', 
    valueField: 'url', 
    labelField: 'name', 
    searchField: 'name', 
    options: [], 
    create: false, 
    render: { 
     option: function(item, escape) { 
      console.log(item); 
      return '<div>' + 
       '<span class="title">' + 
        '<span class="by">' + escape(item.name) + '</span>' + 
       '</span>' + 
       '<span class="description">' + escape(item.concept_id) + '</span>' + 
      '</div>'; 
     } 
    }, 
    score: function(search) { 
     var score = this.getScoreFunction(search); 
     return function(item) { 
      return score(item) * (1 + Math.min(item.watchers/100, 1)); 
     }; 
    }, 
    load: function(query, callback) { 
     if (!query.length) return callback(); 
     $.ajax({ 
      url: "http://192.241.245.176:4567/api1", 
      dataType: 'text', 
      type: "GET", 
      data: { 
       q: query, 
       page_limit: 10 
      }, 
      error: function() { 
       callback(); 
      }, 
      success: function(res) { 
       var result = {}; 
       result.name = d3.csv.parse(res); 
       console.log(result); 
       callback(result.name); 
      } 
     }); 
    } 
}); 

任何人都可以请告诉我我哪里错了吗?

+0

尽量安慰'result.name' – Owlvark 2015-02-07 17:54:33

+0

是的,我尝试,并且它安慰@Owlvark – devanshi28 2015-02-09 05:43:35

回答

0

我相信有一个关键的价值标准被强制,但文件并没有很全面地涵盖它。它在那里被一度提及,但没有进一步讨论。

你必须从名称和值的属性的服务器返回的结果是:

名=> namedata

值=> valuedata

Cliffnote:$项目[$ i] [ '名'] [ '身份证']

Cliffnote:$项目[$ i] [ '值'] [$在我的情况下键]

建设我的结果看起来是这样的PHP代码。

$group['location'] = range(0,5); 
             //'street', 
             //'city', 
             //'county', 
             //'state', 
             //'country', 
             //'country2', 

    $group['property'] = range(0,4); 
             //'title', 
             //'property_sub_type', 
             //'subdivision_name', 
             //'sub_cat', 
             //'interior_features', 

    $group['school'] = range(0,2); 
             //'junior_high_School', 
             //'middle_school', 
             //'high_school', 

    $group['mls']  = range(0,1); 
             //'mls_area' 
             //'mls_id#' 
    $items = array(); 
    for ($i = 0; $i < count($res); $i++) 
    { 
     $items[$i]['name']['id'] = array_shift($res[$i]); 
     $offset   = 0; 
     foreach ($group as $key => $val) 
     { 
      $items[$i]['value'][$key] = array_filter(array_slice($res[$i], $offset, count($group[$key]))); 
      $offset += count($group[$key]); 
     } 
    } 

导致这种数据结构

Array 
(
    [0] => Array 
     (
      [name] => Array 
       (
        [id] => 119 
       ) 

      [value] => Array 
       (
        [location] => Array 
         (
          [street] => 25700 Cliff Cir 
          [city] => Spicewood 
          [county] => Travis 
          [state] => Texas 
         ) 

        [property] => Array 
         (
          [property_sub_type] => Single Lot 
          [subdivision_name] => Lakecliff On Lake Travis Sec 01 
         ) 

        [school] => Array 
         (
          [junior_high_School] => N/A 
          [middle_school] => Marble Falls 
          [high_school] => N/A 
         ) 

        [mls] => Array 
         (
          [mls_area] => 12 
          [mls_id#] => 4434048 
         ) 

       ) 

     )