我正在开发一个eshop,客户想要ajax。我认为这是一个坏主意,因为它会变慢。
然而,在查看产品时,左侧有一些过滤器。当用户选择过滤器时,应禁用其他过滤器。
例如,男性和女性都可能有夹克,但红色仅适用于女性,因此当用户点击男性时,应禁用红色过滤器。
我想知道哪种方法是实现这一目标的最佳途径。我不会使用ajax只是加载该类别的所有产品并使用Javascript过滤它们但我不能,因为我必须使用ajax。
那么我应该像.getJson('filters.php.....', currentFilters, callback)
那样单独打电话吗?然后决定禁用哪些过滤器? (这需要在数据库中执行更多查询)
或者可以在结果页面中包含以下内容:
<script type=text/javascript>
var data={jsondatagoeshere};
</script>
我想知道所有浏览器是否都会执行此代码。还有其他建议吗?
答案 0 :(得分:1)
两者都可以正常工作,但这一切都取决于数据的大小。
另一种方法是直接在页面上过滤结果,如(隐藏不匹配的项目):
快速举例:
HTML
<ul>
<li>Item1 <span>tag1, tag2</span></li>
<li>Item2 <span>tag1, tag3</span></li>
</ul>
CSS
span { display:none }
jquery的
$(".filter").click(function() {
$("ul > li").hide().filter(function() {
return $("span", this).text().indexOf("tag1") >= 0;
}).show();
});
这将立即过滤,而不必多次调用数据库,但正如我所说,这一切都取决于数据的大小。