当前位置:  开发笔记 > 前端 > 正文

Ajax调用填充Typeahead Bootstrap

如何解决《Ajax调用填充TypeaheadBootstrap》经验,为你挑选了2个好方法。

我想要做的是通过Ajax获取一个json对象,并使用一种值填充Bootstrap Typeahead.

这是我的代码:

nameTypeHead: function () {
        var _self = this,
            searchInput = $('#nameTypeHead'),
            arr = [];

        function getArray() {
            $.ajax({
                url: '/Home/AutoComplete',
                type: 'post',
                dataType: 'json',
                data: { searchText: searchInput.val() },
                success: function (data) {
                    $.each(data, function () {
                        arr.push(this.Name);
                    });
                    return arr;
                }
            });
        }

        searchInput.typeahead({
            source: getArray()
        });
    } 

我收到arr为null的错误

我也试过.parseJSON()但没有成功:

$.each($.parseJSON(data), function () {
   arr.push(this.Name);
});

我该怎么做才能在Typeahed中显示我的Json对象的值Name?

如果在Ajax Success中我alert(JSON.stringify(data));正确地提醒我的Json对象.



1> moonwave99..:

我是从头开始做的:

$('#typeahead').typeahead({

    source: function (query, process) {
        return $.getJSON(
            'path/to/lookup',
            { query: query },
            function (data) {
                return process(data);
            });
    }

});

data简单的JSON数组在哪里:

 [
   "John",
   "Jane",
   "Alfredo",
   "Giovanni",
   "Superman"
 ]

如果你的data数组有不同的结构,只需重新排列它然后再传递给process()方法.

你可以在这里找到一个实例.

编辑 - 基于您的json数据:

[
    {'id':'0', 'name':'John'},
    {'id':'1', 'name':'Jane'}, 
    {'id':'2', 'name':'Alfredo'},
    ...
}

getJSON回调变为:

function (data) {

    var newData = [];

    $.each(data, function(){

        newData.push(this.name);

    });

    return process(newData);

}); 



2> mc...:

查看这个要点.是否自动完成,处理快速打字机和缓存

https://gist.github.com/mrgcohen/5062352

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有