【发布时间】:2023-03-16 09:29:01
【问题描述】:
我正在开发一个带有航班搜索 API (Multicom FindAndBook) 的应用程序,它会根据给定的输入返回较大的结果。
我的问题是如何过滤返回的数据(价格、到达时间、出发时间、经停次数和航空公司名称)?我找到了过滤的三种解决方案
1) 使用jQuery在客户端过滤数据
但在这里我使用 jQuery 过滤数据,但我在对过滤后的数据进行分页时遇到了困难。
2) 向服务器发出 Ajax 请求以使用 PHP 进行过滤
但加载数据需要更多时间。
3) 将搜索结果转储到 WebSQL 数据库并在客户端过滤数据。
在这里我可以过滤数据,但这是从本地数据库过滤数据的正确方法吗?
谁能告诉我获得高性能的正确方法是什么?
编辑:
API 不提供过滤,但每个过滤请求都需要很长时间(最多 30 秒)。我决定最好获取所有搜索数据并对结果数据进行过滤。
这是用于我的 jQuery 过滤的Fiddle:
$(function () {
var minPrice = 299,
maxPrice = 1099,
$filter_lists = $("#filters ul"),
$filter_checkboxes = $("#filters :checkbox"),
$items = $("#computers li.system");
$filter_checkboxes.click(filterSystem);
$('#slider-container').slider({
range: true,
min: minPrice,
max: maxPrice,
values: [minPrice, maxPrice],
slide: function (event, ui) {
$("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
minPrice = ui.values[0];
maxPrice = ui.values[1];
filterSystem();
}
});
$("#amount").val("$" + minPrice + " - $" + maxPrice);
function filterSlider(elem) {
var price = parseInt($(elem).data("price"), 10);
console.log(price);
return price >= minPrice && price <= maxPrice;
}
function filterCheckboxes(elem) {
var $elem = $(elem),
passAllFilters = true;
$filter_lists.each(function () {
var classes = $(this).find(':checkbox:checked').map(function () {
return $(this).val();
}).get();
console.log('classes', classes);
var passThisFilter = false;
$.each(classes, function (index, item) {
if ($elem.hasClass(item)) {
console.log('hasClass', item);
passThisFilter = true;
return false; //stop inner loop
}
});
if (!passThisFilter) {
passAllFilters = false;
return false; //stop outer loop
}
});
return passAllFilters;
}
function filterSystem() {
$items.hide().filter(function () {
return filterSlider(this) && filterCheckboxes(this);
}).show();
}
});
【问题讨论】:
-
您使用的是什么航班搜索 API?请将其编辑到您的问题中。您不能使用 API 本身进行过滤吗? (我怀疑这个问题相当广泛,因为在每种情况下最好的方法都会有所不同。您可能需要显示一些代码才能获得具体答案)。
-
欢迎来到栈溢出,请告诉我们你的尝试,你可能想访问stackoverflow.com/help/on-topic
-
@KP6 我用我尝试过的方法更新了我的问题
-
@halfer 如果我将数据存储在本地数据库中怎么样
-
这听起来不对。向 API 提供者注册一个支持请求,看看他们是否有问题,或者他们是否有其他推荐的方法。
标签: javascript php jquery web-sql