Autocomplete 如何扩展scriptaculous自动完成程序?

Autocomplete 如何扩展scriptaculous自动完成程序?,autocomplete,scriptaculous,Autocomplete,Scriptaculous,中的自动完成程序要求服务器响应为列表。我是否有办法扩展或替换这种行为,以便它可以接受XML或JSON文档形式的服务器响应 是否还有一种方法可以扩展自动补全器的渲染器,以便我可以将页脚添加到自动补全列表中?是的,您可以扩展script.aculo.us的自动补全器的行为。您可以通过使用处理json数据并为您创建-列表的代码覆盖onComplete方法来实现这一点。然后应将此列表发送到updatechices 假设您将在搜索“U”时检索以下JSON响应: 可以处理上述响应的Ajax.Autocomp

中的自动完成程序要求服务器响应为
列表。我是否有办法扩展或替换这种行为,以便它可以接受XML或JSON文档形式的服务器响应


是否还有一种方法可以扩展自动补全器的渲染器,以便我可以将页脚添加到自动补全列表中?

是的,您可以扩展script.aculo.us的自动补全器的行为。您可以通过使用处理json数据并为您创建
-列表的代码覆盖
onComplete
方法来实现这一点。然后应将此列表发送到
updatechices

假设您将在搜索“U”时检索以下JSON响应:

可以处理上述响应的Ajax.Autocompleter扩展示例:

var MyCompleter = Class.create(Ajax.Autocompleter, {

    initialize: function($super, id_search, id_list, url, options) {
        $super(id_search, id_list, url, options);
    },

    onComplete: function(response) {
        var text = response.responseText;
        if (text.isJSON()) {
            this.handleJSON(text.evalJSON());
        }
        // else do nothing
    },

    handleJSON: function(json) {
        var htmlStr = '<ul>';
        json.each(function(item) {
            htmlStr += '<li>';
            htmlStr += item;
            htmlStr += '</li>';
        });
        htmlStr += '</ul>';
        this.updateChoices(htmlStr);
    }

});
var MyCompleter=Class.create(Ajax.Autocompleter{
初始化:函数($super、id\u搜索、id\u列表、url、选项){
$super(id\u搜索、id\u列表、url、选项);
},
未完成:功能(响应){
var text=response.responseText;
if(text.isJSON()){
this.handleJSON(text.evalJSON());
}
//否则什么也不做
},
handleJSON:函数(json){
var htmlStr='
    '; json.each(函数(项){ htmlStr+='
  • '; htmlStr+=项目; htmlStr+='
  • '; }); htmlStr+='
'; 本文件为.updatechices(htmlStr); } });
还有一个例子说明了如何使用

var MyCompleter = Class.create(Ajax.Autocompleter, {

    initialize: function($super, id_search, id_list, url, options) {
        $super(id_search, id_list, url, options);
    },

    onComplete: function(response) {
        var text = response.responseText;
        if (text.isJSON()) {
            this.handleJSON(text.evalJSON());
        }
        // else do nothing
    },

    handleJSON: function(json) {
        var htmlStr = '<ul>';
        json.each(function(item) {
            htmlStr += '<li>';
            htmlStr += item;
            htmlStr += '</li>';
        });
        htmlStr += '</ul>';
        this.updateChoices(htmlStr);
    }

});