4
script.aculo.us中的自動完成程序預計服務器響應是<ul>
列表。有什麼方法可以擴展或替換此行爲,以便它可以接受服務器響應,而不是XML或JSON文檔?如何擴展scriptaculous autocompleter?
是否還有一種方法來擴展autocompleter的渲染器,以便我可以添加頁腳到自動補全列表中?
script.aculo.us中的自動完成程序預計服務器響應是<ul>
列表。有什麼方法可以擴展或替換此行爲,以便它可以接受服務器響應,而不是XML或JSON文檔?如何擴展scriptaculous autocompleter?
是否還有一種方法來擴展autocompleter的渲染器,以便我可以添加頁腳到自動補全列表中?
是的,你可以擴展script.aculo.us的自動完成器的行爲。您可以通過用處理json數據的代碼覆蓋onComplete
方法併爲您創建<ul>
-list來執行此操作。此清單應該發送到updateChoices
。
說你會檢索以下JSON響應,當你搜索「U」:
[
"Unicorn",
"University"
]
於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);
}
});