当前位置: 首页 > 知识库问答 >
问题:

TypeaheadJS方法不将数组转换为值

裴彦
2023-03-14
["JobName1", "JobName1", "akhsfkh"]

当它通过以下代码时:

 $(function() {
    var projectNumbers = $.getJSON("api/Project/GetAllNumbers")
        .done(function(result) {
            console.log(result);
            return result; // ["JobName1", "JobName1", "akhsfkh"] is here
        })
        .fail(function(jqXHR, textStatus, err) {
            alert('Error: ' + err);
        });


    var substringMatcher = function(strs) {
        return function findMatches(q, cb) {
            var matches, substrRegex;

            // 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)) {
                    // the typeahead jQuery plugin expects suggestions to a
                    // JavaScript object, refer to typeahead docs for more info
                    matches.push({ value: str });
                }
            });

            cb(matches);
        };
    };

    $('#jobNumber').typeahead({
        hint: true,
        minLength: 2,
        highlight: true,
    },
        {

            name: 'projects',
            source: substringMatcher(projectNumbers.serializeArray()),
        });
});

我的输入框显示前面的类型,但可用的数据是:

JobName1, JobName1, akhsfkh

substringMatcher函数没有更改它。

有什么建议吗?

共有1个答案

公孙阳文
2023-03-14

不能从类似这样的getJSON请求返回结果

您必须存储结果,然后在回调中完成其余的工作。

var projectNumbers;
$.getJSON("http://jsbin.com/heyobi/1.json")
    .done(function (result) {
    projectNumbers = result;
    initTypeahead();
})
    .fail(function (jqXHR, textStatus, err) {
    alert('Error: ' + err);
});

var substringMatcher = function (strs) {
......
});

function initTypeahead() {
    $('.typeahead').typeahead({
        hint: true,
        minLength: 2,
        highlight: true,
    }, {
        name: 'projects',
        source: substringMatcher(projectNumbers),
    });
}

这是一个演示

 类似资料:
  • 问题内容: 除了遍历所述集合的内容并将每个项目手动推入数组之外,是否有更有效的方法将HTMLCollection转换为数组? 问题答案: var arr = Array.prototype.slice.call( htmlCollection ) 使用“本地”代码将具有相同的效果。 编辑 由于这有很多观点,请注意(按@oriol的评论),以下更简洁的表达 实际上 等效: 但是,请注意@JussiR

  • 问题内容: 我有一个包含几个整数的数组。我已经向数组添加了一些值,但是现在我需要通过jQuery的方法将此数组发送到页面。如何将其转换为JSON对象进行发送? 问题答案: 向后兼容的脚本:https : //github.com/douglascrockford/JSON- js/blob/master/json2.js 并致电: 注意: JSON对象现在是大多数现代Web浏览器(IE 8及更高版

  • 问题内容: 如何将数组转换为CSV文件? 这是我的数组: 问题答案: 我正在使用以下功能;它是对fputscsv注释中的man条目之一的改编。而且您可能想要展平该数组;不知道如果您传递一个多维的行会发生什么。

  • 我不断得到这样的错误: 错误:找不到适合计划的方法(足球,int) 方法Timer.Schedule(TimerTask,long)不适用 (参数不匹配;soccer无法转换为TimerTask) 方法timer.schedule(TimerTask,Date)不适用 (参数不匹配;soccer无法转换为TimerTask) 对不起可怜的岗位,第一次做这件事。

  • 问题内容: 我正在尝试将Java中的Javascript数组转换为Java数组。我正在使用javax.script包。我在这里测试了此示例,但是无法识别类型“ NativeArray” 我如何才能识别NativeArray类型? 问题答案: 按照这个答案,看来最好的选择是编写一个JavaScript转换器函数,该函数使用Rhino的Java绑定功能将本机JavaScript数组转换为Java数组。

  • 问题内容: 我有一个想要转换为纯JavaScript数组的json数组: 这是我的json数组: 如何将其转换为普通的javascript数组,如下所示: 问题答案: 已经是JS对象(不是JSON)。但是,您可以在这里: 编辑:将 元素插入数组中的正确位置。谢谢@RoToRa 也许一开始不创建此类对象会更容易。它是如何创建的?