使JSON可供以后使用

时间:2013-06-18 13:32:05

标签: jquery json autocomplete

我正在尝试构建一个简单的自动完成功能。

我的第一个目的是每次用户在%like%中添加或删除某个字符时,使用<input>语句查询特定数据库,然后显示结果。

但我想通过提取JSON然后使用它来防止这种繁重的数据库使用。

我怎样才能将JSON文件提供给我的jQuery脚本?

2 个答案:

答案 0 :(得分:3)

您可以通过执行查询,使用json_encode()对值进行编码,然后在JavaScript块中打印HTML中的值来完成此操作,àla:

<script type="text/javascript">
<?php

    echo 'var json_values = \'' . $json_encoded_values . '\'';

?>
</script>

...这将允许您根据自己的脚本使用json_values

然而,在你走这条路之前,我建议你研究一下jQuery UI's Autocomplete API;当用户输入时(通过适当的暂停等),它将更智能/更有效地搜索项目 - 而不是每次用户更改字段时都进行查询。

即使经常查询,简单的LIKE查询似乎也不太可能为数据库添加 很多开销。

答案 1 :(得分:3)

当您知道自动完成查找的结果不应每次都更改时,您可以按照jQuery UI Autocomplete demo page中所述将结果缓存到对象中:

$(function () {
    var cache = {};
    $("#birds").autocomplete({
        minLength: 2,
        source: function (request, response) {
            var term = request.term;
            if (term in cache) {
                response(cache[term]);
                return;
            }
            $.getJSON("search.php", request, function (data, status, xhr) {
                cache[term] = data;
                response(data);
            });
        }
    });
});

听起来您希望在用户开始输入任何内容之前预先加载完整的JSON结果。在这种情况下,只需在页面首次加载时像这样加载JSON对象:

$.getJSON("search.php", request, function (data, status, xhr) {
    cache[term] = data;
    response(data);
});

然后使用本地对象(&#34;缓存&#34;在上面的示例中)作为自动填充查找的来源(请参阅主要选项的defaultcustom display自动完成演示那里),例如,像这样:

$("#autocompleteInput").autocomplete({
    source: cache
});