Typeahead result population returns 整个数组对象

Typeahead result population returns the entire array object

我正在使用 twitter typeahead javascript 库来预填充搜索词以帮助用户搜索特定名称。我正在使用他们的示例 substringMatcher 函数,可以在 here.

中找到

我正在使用 Ajax 调用填充我的数据,该调用 return 是我期望的数据。然后将该数组传递给该示例 substringMatcher 函数,但是在搜索它时 return 是整个数组而不是每个单独的项目(见图)。

应该只是return个体名称,不是数组!

这是我的预输入函数和来源;

$('input#practition-typeahead').typeahead({
    hint: true,
    highlight: true,
    minLength: 3,
},{
    name: 'output',
    source: substringMatcher(
        jQuery.ajax({
            type: "POST",
            url: "/wp-admin/admin-ajax.php",
            dataType: "json",
            data: {
                action: 'get_all_practitioners'
            },
            success:function(output){       
                return output;
            }
        })
    )
}); 

我的子串匹配器函数

var substringMatcher = function(strs) {
  return function findMatches(q, cb) {
    var matches, substringRegex;
    // an array that will be populated with substring matches
    matches = [];
    // regex used to determine if a string contains the substring `q`
    substrRegex = new RegExp(q, 'i');

    // iterate through the pool of strings and for any string that
    // contains the substring `q`, add it to the `matches` array
    $.each(strs, function(i, str) {
      if (substrRegex.test(str)) {
        matches.push(str);
      }
    });
    cb(matches);
  }; 
};

编辑 - 当我 console.log 我的 output 从我的 ajax 的 success 我得到以下信息;

success:function(output){
    console.log(output);        
    return output;
}

我通过延迟输入实例直到 ajax 调用完成来解决了这个问题。完整的代码可以在下面找到;

var output = [];
jQuery.ajax({
    type: "POST",
    url: "/wp-admin/admin-ajax.php",
    dataType: "json",
    data: {
        action: 'get_all_practitioners'
    },
    success:function(output){
        console.log(output);        
        return output;
    }
}).done(function(output){
    $('input#practition-typeahead').typeahead({
        hint: true,
        highlight: true,
        minLength: 1,
    },{
        name: 'output',
        source: substringMatcher(
            output
        )
    }); 
});