2015-01-13 46 views
0

我正在构建一个网上商店,并希望使用PHP和Jquery制作一些产品过滤器。网上商店:使用PHP和JQuery产品过滤和分页

这样做的最佳方法是什么?例如,我想在价格,特色,品牌,颜色等方面过滤我的产品。我也想使用分页。

过滤本身(使用PHP并在页面中重新加载)不会有任何问题,但是如何在从产品页面返回到类别页面时保留过滤器(历史记录按钮)。

我的方式做到了一次:请在URL中的哈希,所以:http://www.domain.com/categoryname/#FILTERcolor=blue&size=1等 我:jQuery是如下:

if(location.hash != ''){ 
    poststr = location.hash; 
    pattern = /^#FILTER/ 
    if(pattern.test(poststr)){ 
     ajax('assets/php/ajax/productfilter.php',poststr.replace('#FILTER',''),callbackfunction); 
    } 
} 

当我回到了分类页面,哈希仍在URL中,使用AJAX实现。

是否有更好的方法来制作产品过滤器?

回答

0

如果您使用的是jQuery,并且您正在构建现代网页,那么在用户设置过滤器后不要重新加载整个页面。相反,使用AJAX请求来获得结果,当用户选择一个过滤器时,只需用jQuery更新结果列表而不用重新加载页面。您可以向您的PHP脚本发出AJAX请求,并将其传递给过滤器,并将结果显示为0到50,然后将结果返回JSON编码并显示在您的网页上。当用户请求下一页时,您再次执行相同的请求,但要告诉它显示50到100的结果。您仍然可以将过滤器保存在散列中,以便用户可以复制和共享带有过滤器的链接。

+0

感谢您的回答。 我不重新加载整个页面,但使用innerHTML函数重新加载一个div中的AJAX调用的结果。 问题是,我每次回顾浏览器中产品页面的历史按钮到类别页面时,脚本会查看URL中是否存在散列。这样每次我回到浏览器中的历史按钮 时,数据将通过AJAX调用重新加载。我想知道是否有更好的方式,以便过滤器,产品,分页等 将被保存,并且每次使用历史记录按钮时都不会重新加载。 – Bart

+0

如果要在多个页面上保留(javascript-set)过滤器,可以使用localStorage。 例子: localStorage.setItem( “过滤器”,过滤器) localStorage.getItem( “过滤器”) 注意localStorage的不仅节省了字符串,但您可以使用JSON.stringify()和JSON.parse()保存数组或对象。 – felixfbecker

相关问题