2010-10-23 61 views
1

我正在开发一个eshop和客户端想要ajax。我认为这是一个糟糕的主意,因为它会很慢。jQuery最好的方式来获得JSON与AJAX

但是,在查看产品时,左侧有一些过滤器。当用户选择一个过滤器时,应该禁用其他一些过滤器。

例如,可能会有男性和女性的夹克,但红色仅适用于女性,因此当用户单击男性时,应禁用红色过滤器。

我想知道哪个是实现这一目标的最佳方法。我不会使用ajax,因为这只是加载类别的所有产品,并用Javascript过滤它们,但我不能,因为我必须使用ajax。

所以我应该做一个单独的电话,如.getJson('filters.php.....', currentFilters, callback)?然后决定哪些过滤器将被禁用? (这需要在数据库中执行多个查询)

或者是有可能在结果页这样的事情包括:

<script type=text/javascript> 
    var data={jsondatagoeshere}; 
</script> 

我不知道所有的浏览器是否会执行该代码。任何其他建议?

回答

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(); 
}); 

这将立即过滤,而不必多次调用数据库,但正如我所说的,这一切取决于数据的大小。

+0

多数民众赞成但不错,但问题是,客户希望分页...我认为这是很难实现这一点和分页尽管支持非JavaScript的用户... – GorillaApe 2010-10-24 22:22:23

+0

对于分页,有很多jquery的插件,可以处理它,比如http://www.j-dee.com/2008/12/22/jquery-pager-plugin/ - 对于不支持JavaScript的用户,您无法使用任何ajax解决方案(按照客户端的要求)不用JavaScript 。 – Mouhannad 2010-10-24 23:14:31