gpt4 book ai didi

javascript - 如何使用 Ajax(没有 jQuery ui)过滤自动建议的 JSON 数据

转载 作者:行者123 更新时间:2023-11-30 00:27:05 24 4
gpt4 key购买 nike

我正在尝试从头开始创建自动建议。我正在使用 canjs Controller 来控制 DOM 元素(ul 和 li)。我想要智能和简短的代码来实现这一点。我尝试过使用过滤器,但我希望 Ajax 过滤器方法用于此目的。

我试过以下方法:

可以.型号:

 var SearchDomainModel = can.Model.extend({
findAll: function(){
return this.getDomains;
}
}, { domainList: null,
getDomains: function(params, callback) {
var promise = $.ajax({
url: '/scripts/models/domains.json',
type: 'GET',
dataType: 'json',
dataFilter: function(data, type){
var parsed_data = JSON.parse(data);
var regex = new RegExp(params, 'gi')
var temp = [];
$.each(parsed_data, function(i, item){
for(var j in item)
if ((item[j].url).toLowerCase().indexOf(params) >= 0){
temp.push(item[j].url);
console.log(temp);
}
});
return temp;
}

});

这是我的 can.controller:

var DomainController = can.Control.extend({
defaults: {
view: 'views/domainSearch.hbs'
}
}, {
searchList: new can.List(),
domainModel: new DomainModel(),
init: function(element, options) {
this.element.html(can.view(this.options.view, this.searchList));
$('html,body').css({
percentWidth: 100,
percentHeight: 100
});
$('.error').hide();
}, // control domain filter on keyup event

'input keyup': function(element, event) {
var self = this;
var searchText = element.val();

if (searchText !== "") {


this.domainModel.getDomains(searchText, function (response, error) {

self.searchList.attr("domains",response);
console.log(error);
})

我从过去两天开始尝试和搜索。我做不到。谁能告诉我代码中的错误在哪里以及如何解决?

提前致谢!!

最佳答案

我可能会做这样的事情:

var SearchDomainModel = can.Model.extend({
findAll: function(){
return this.getDomains;
}
}, { domainList: null,
getDomains: (function() {
var domains = null;

function search(searchText, callback){
var regex = new RegExp(searchText, 'gi')
var temp = [];
$.each(domains, function(i, item){
for(var j in item)
if (regex.test(item[j].url))
temp.push(item[j].url);
});
callback(temp);
}

return function(searchText, callback) {

if( domains ) {
search(searchText, callback);
return;
}

$.ajax({
url: '/scripts/models/domains.json',
type: 'GET',
dataType: 'json',
success: function(data) {
domains = data;
search(searchText, callback);
}
});

};

})()

});

我没有测试代码,但它不会在您每次释放一个键时生成一个 ajax 请求,而是获取一次数据然后引用相同的数据。

关于javascript - 如何使用 Ajax(没有 jQuery ui)过滤自动建议的 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31041496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com