如何使用从数据库中提取的数据填充javascript变量?

时间:2014-01-10 12:48:41

标签: javascript jquery

我刚刚实现了这个自动完成功能:http://imankulov.github.io/asuggest/index.html 它可以正常使用这样的设置:

var suggests = ["head", "hello", "heart", "health", "horizontal", "horizont", "hormonotherapy"];
$("#autocomplete").asuggest(suggests, {'delimiters':':', 'minChunkSize':3, 'endingSymbols':'] '});
  • 顺便说一下;我有什么理由不能使用[作为分隔符吗?它完全没有回应那个角色 - 这是一个巨大的无赖......

反正;我想在用户输入时从数据库中提取的数据中填充suggests - 变量。

我刚试过这种方法:

$("#autocomplete").keyup(function(){
    var suggests = $.getJSON('assets/scripts/getExtra.json.php',{ term: $(this).val() }, function(data) {
        return data;
    });
    $("#autocomplete").asuggest(suggests, {'delimiters':':', 'minChunkSize':3, 'endingSymbols':'] '});
});

这不起作用。控制台显示它返回一个具有预期值的字符串,但是asuggest函数没有检测到它。
当我现在看到它时,我可以看到它为每个角色提出了一个请求,并且包含了所有角色(textarea)..

关于每次启动新搜索时如何更改/更新suggests - 变量而不是AJAX的任何建议?

我需要能够像这样进行搜索:
“首先用[this]和[that]填充一个容器。然后在最后添加一些[东西]。”

每次输入[时,我都需要清除/清空suggests - 变量,并启动对数据库的新搜索。

3 个答案:

答案 0 :(得分:0)

Here你有一个使用JSONP作为数据源的全功能自动完成示例。

答案 1 :(得分:0)

请记住,您的AJAX调用是异步完成的。因此,当调用$.getJSON()返回时,您的成功回调尚未被调用。因此,当它调用$("#autocomplete").asuggest(suggests, {})时,您的变量没有数据(我不确定它会是什么)。

请改为尝试:

$("#autocomplete").keyup(function(){
    $.getJSON('assets/scripts/getExtra.json.php',{ term: $(this).val() }, function(suggests) {
        $("#autocomplete").asuggest(suggests, {'delimiters':':', 'minChunkSize':3, 'endingSymbols':'] '});
    });
});

通过在回调中执行此操作,您可以在获取数据后初始化自动提示。

编辑:如果这不起作用,您可以尝试:

$("#autocomplete").keyup(function(){
    $.getJSON('assets/scripts/getExtra.json.php',{ term: $(this).val() }, function(data) {
        console.log(JSON.stringify(data);
        var suggests = ["head", "hello", "heart", "health", "horizontal", "horizont", "hormonotherapy"];
        $("#autocomplete").asuggest(suggests, {'delimiters':':', 'minChunkSize':3, 'endingSymbols':'] '});
    });
});

答案 2 :(得分:0)

可能不相关,但这可能对某人有用。提取数据后,手动调用$("#autocomplete").keyup()会向您显示更新的建议:

因此您的代码可能类似于:

$("#autocomplete").keyup(function(){
    $.getJSON('assets/scripts/getExtra.json.php',{ term: $(this).val() }, function(suggests) {
        $("#autocomplete").asuggest(suggests, {'delimiters':':', 'minChunkSize':3, 'endingSymbols':'] '});
        $("#autocomplete").keyup(); // this line should do the trick
    });
});