当用户执行搜索时,应保存这些搜索设置以供将来使用。
用户应填写一些表单字段,然后执行搜索。当他执行新的搜索时,旧的应该可以,等等。
我使用 javascript,jQuery。
我怎么能这样做?
我的意思是将其保存在本地机器中,而不是数据库中。
当用户执行搜索时,应保存这些搜索设置以供将来使用。
用户应填写一些表单字段,然后执行搜索。当他执行新的搜索时,旧的应该可以,等等。
我使用 javascript,jQuery。
我怎么能这样做?
我的意思是将其保存在本地机器中,而不是数据库中。
使用 HTML5 本地存储来存储和读取保存的搜索。:
// Write a local item..
localStorage.setItem("myKey", "myValue");
// Read a local item..
var theItemValue = localStorage.getItem("myKey");
// Check for changes in the local item and log them..
window.addEventListener('storage', function(event) {
console.log('The value for ' + event.key + ' was changed from' + event.oldValue + ' to ' + event.newValue);
}, false);
// Check for HTML5 Storage..
function supports_html5_storage() {
try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch (e) {
return false;
}
}
你可以试试这个插件https://sites.google.com/site/daveschindler/jquery-html5-storage-plugin
您的目标是保存搜索,一旦他们在您执行操作之前输入它们,因此在提交表单时,使用插件将其保存到本地存储,然后执行搜索。
每次用户访问页面时,您还需要从存储中加载,以获取最后几次搜索。
您可以使用 cookie 或网络存储。更多浏览器支持 Cookie,但 Web Storage 更易于使用。如果你使用 cookie,我推荐这个 jQuery 插件https://github.com/carhartl/jquery-cookie
保存设置$.cookie('key', 'value');
读取设置$.cookie('key');
使用所有主流浏览器最新版本支持的 Web 存储:
localStorage.setItem(key, value);
localStorage.getItem(key, value);
您可以使用 Google 查找有关 API 的更多详细信息
TL;DR 我已经编写了一个库来处理这个 + 它的边缘情况,请参阅https://github.com/JonasBa/recent-searches#readme了解用法。
尽管所有示例在技术上都可以,但它们并未涵盖存储最近搜索的任何边缘情况,例如实现 LocalStorage 空间的到期、排名或限制。
示例
过期:假设有人搜索查询iPhone
,但已在repairing iPhone
1 个月前查找查询,则修复 iPhone 查询可能已过时。
最近搜索 的排名 在进行前缀搜索时,排名也是如此,如果用户在 3 小时前查询“Apple TV”和在 8 小时前查询“电视电缆”,他们现在搜索“电视”,您可能想要实现两者的排名系统。
安全处理存储 仅写入 LocalStorage 将导致您每次都需要解析大量 JSON,从而逐渐减慢您的应用程序,直到您达到限制并失去此功能。
正是因为这个问题,我建立了一个最近搜索库来帮助你解决所有这些问题。您可以通过 npm 使用它并在此处找到它。它将帮助您解决上述所有问题,并允许您非常快速地建立最近的搜索!