通过Ajax获取的JSON数据自动完成

时间:2011-08-21 06:58:19

标签: jquery json perl autocomplete

我正在尝试将自动填充功能用于搜索框,自动填充的内容来自cgi脚本,通过返回JSON的Ajax。

让我们从自动填充的javascript部分开始。我可以使用硬编码列表让它工作得很好,但是当我使用它时没什么。

$(document).ready( function(){
$('#search_term').autocomplete({        
    source:function(request, response){
        $.ajax({
            url: './test2.cgi',
            dataType: 'json',
            data: {
                maxRows: 5,
                name_startsWith: request.term
            },
            success: function(data){
                response( $.map(data.matches, function (item){
                    return {
                        label: item.label + "," + item.value,
                        value: item.value
                    }
                }));
            }
        });

    }
});

以下是我的test2.cgi perl脚本生成的JSON文件示例。

{"matches":[{"value":"color","label":"PATO:0000014"},{"value":"color hue","label":"PATO:0000015"},{"value":"color brightness","label":"PATO:0000016"},{"value":"color saturation","label":"PATO:0000017"},{"value":"color pattern","label":"PATO:0000019"},{"value":"color value","label":"PATO:0000310"}]}

我无法弄清楚我在哪里出错了。

编辑1: 我实际上在代码中使用类似的参数执行了一个ajax调用,所以我认为它应该可行。这是第一个ajax调用,我知道这一个事实,因为我能够处理json数据并在网站上显示它

function runSearch(term){
$('#results').hide();
$('tbody').empty();

var frmStr = $('#obo_search').serialize();

$.ajax({
    url: './test.cgi',
    dataType: 'json',
    data: frmStr,
    success: function (data, textStatus, jqXHR){
        processJSON(data);
    },
    error: function(jqXHR, textStatus, errorThrown){
        alert("Failed to perform search! textStatus:(" + textStatus + ") and errorThrow: (" + errorThrown + ")");
    }
});
}

0 个答案:

没有答案