BS 类型预行不显示结果



我在Bootstrap Typeahead中遇到了这个问题。

HTML标记:

<div class="form-group">
    <label for="">Recipients</label>
    <input id="recipients" name="recipients" 
        autocomplete="off" 
        class="form-control" 
        data-role="tagsinput">
</div>

JavaScript:

$('#recipients').tagsinput({
    allowDuplicates: false,
    trimValue: true,
    confirmKeys: [13, 44],
    typeahead: {
        source: function(queryForHints) {
            if (queryForHints.length < 4)
                return '';
            var parameters = {
                'queryForHints': queryForHints
            };
            jQuery.ajax({
                url: "/xxxx/xxxx",
                data: parameters,
                type: "POST",
                dataType: "json",
                success: function(data) {
                    return (data);
                },
                error: function(data) {
                    console.log("error for xxxxx/xxxxx");
                },
                async: true
            });
        }
    }
});

在Ajax调用之后,我得到了这个数组:

[{
    "value": "+393334029137",
    "text": "Dean Leandra (+393334029137)"
}, {
    "value": "+393333419836",
    "text": "Alfonso Erasmus (+393333419836)"
}, {
    "value": "+393173833341",
    "text": "Travis Aquila (+393173833341)"
}, {
    "value": "+393334998841",
    "text": "Conan Preston (+393334998841)"
}]

问题是:我什么都没看到:(什么都没出现。打字不起作用。

在控制台中,我得到这个错误

bootstrap标记sinput.js:331未捕获类型错误:无法读取属性未定义的"成功"

你能帮我解决这个问题吗?

 success: function(data) {
  var sourceData = [];
    for (var i = 0; i < data.length; i++) {
       sourceData.push(data[i].text);
    }
 return (sourceData);

您从JSON响应中得到的是一个对象数组。你想把text看作是我的一个建议。因此,您需要从对象中获取text,因为typeahead源需要一个字符串数组。将text值推送到另一个字符串数组中并返回。我还没有测试代码,但它应该对您有效。

另一个问题是,您正在进行一个异步的AJAX调用。这就是为什么你没有成功的定义。

最新更新