2012-08-09 46 views
1

小问题(我不是ajax/json guru,裸露在身边)。bootstrap typeahead ajax从数据中选择值

使用: https://github.com/tcrosen/twitter-bootstrap-typeahead/blob/master/demo/js/demo.js

我的电话:

$('#SearchUser').typeahead({ 
       ajax: { 
        url: '/users/ajax_finduser', 
         triggerLength: 3, 
         timeout: 300, 
         method: 'post', 

       }, 
       display: 'name', 
       val: 'id', 
       itemSelected: updateID 
      }); 

我的新的输出:

[ 
    {"id":"5","name":"Som name"}, 
    {"id":"6","name":"Another name"} 
] 

这里是我的问题VAL和名称预输入期待应该是像这样:

[ 
    { id: 1, name: 'Some users name' }, 
    { id: 2, name: 'Another users name' } 
] 

那么如何将额外的级别添加到我的typeahead函数(USER.name + User.id)?我不知道该用什么(){} []?

更新: 如何解决报价? typeahead不会像原样那样接受json输出。我在某处读到我的输出是正确的json。我在这里错过了什么吗?

感谢您的帮助!

-Tom

+0

有了一个快速浏览一下插件,而不是要发生的事。你应该考虑修改你的输出。 – Sherbrow 2012-08-09 18:56:29

+0

Okei ..我修改了输出。但现在有一个报价问题..任何建议?或者可以使用另一个typeahead脚本建议,我可以使用它? – Tom 2012-08-09 20:54:42

+1

似乎对我来说工作得很好:[jsfiddle](http://jsfiddle.net/Sherbrow/bTzZm/)。你有错误,或者是什么?但是如果你想删除数字周围的引号,你的服务器端输出应该有一些数字解析。 – Sherbrow 2012-08-09 21:42:06

回答

4

gist通过@RuslanasBalčiūnas
建议在这里是我结束了:

autosep = '####'; 
$('.autocomplete').typeahead({ 
    minLength: 3 
    , source: function (query, process) { 
     if (!finished) { 
      return; 
     } 
     finished = false; 
     return $.get(
      'the_action' 
      , the_params 
      , function (response) { 
       var data = new Array(); 
       for (var i in response) { 
        data.push(
         response[i]['id'] 
         + autosep 
         + response[i]['label'] 
        ); 
       } 
       finished = true; 
       return process(data); 
      } 
     ); 
    } 
    , highlighter: function(item) { 
     var parts = item.split(autosep); 
     parts.shift(); 
     return parts.join(autosep); 
    } 
    , updater: function(item) { 
     var parts = item.split(autosep); 
     $('#the_id').val(parts.shift()); 
     return parts.join(autosep); 
    } 
}); 
+0

这似乎不适合我。我已经删除了“源”部分,因为我的选择是在页面中进行硬编码的。我仍然会在建议中看到####。 – Allerion 2013-04-29 11:57:11