我正在尝试使用jqueryui autocmplete和amplifyjs。这是为了能够在对真实服务器数据的调用和一些硬编码的调用之间进行切换,并获得额外的灵活性。
现在,我不知道如何让jqueryui自动完成调用amplify来刷新自身并执行搜索。我有以下代码片段:
amplify.request.define('resId', 'ajax', {
url: 'autocmpleteUrl',
dataType: "json",
type: "POST"
});
$(elementId).autocomplete({
minLength: 1,
source: 'some url',
delay: 0,
focus: function (event, ui) {
$(elementId).val(ui.item.label);
return false;
},
select: function (event, ui) {
$(elementId).val(ui.item.label);
return false;
}
}).data("autocomplete")._renderItem = function (ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};我知道在自动补全部分,它可以是url和json数据。但是我不知道如何让它处理amplify,如果用户输入文本,jquery自动完成请求amplify,而不是url本身。有什么想法吗?
发布于 2011-11-28 21:24:04
这接近于您想要的结果,但是您忘记了将搜索词传递给您的请求。你的代码应该是:
$( elem ).autocomplete({
source: function( request, response ) {
amplify.request( "resId", request, function( data ) {
response( data );
});
});
});它将把搜索项作为term查询参数发送。由于您正在执行数据的直接直通,因此也可以减少此操作:
$( elem ).autocomplete({
source: function( request, response ) {
amplify.request( "resId", request, response );
});
});然而,在这两种情况下,您都没有处理错误,这意味着您可以无限期地让自动完成处于搜索状态。您应该使用完整的amplify.request表单来处理错误:
$( elem ).autocomplete({
source: function( request, response ) {
amplify.request({
resourceId: "resId",
data: request,
success: response,
error: function() {
response( [] );
}
});
});
});发布于 2011-11-24 23:51:05
我已经完成了以下解决方案:
autocomplete({
source: function(request, response){
amplify.request('resId', function(data){
response(data);
});
},因此,您可以向jquery.ui autocomplete提供一个函数,在此函数中,只需设置请求对象,autocomplete数据将由您提供的数据填充。
https://stackoverflow.com/questions/8257866
复制相似问题