我正在使用带有Masonry布局的AJAX加载购物应用。
我使用循环来加载和显示产品:
function get_next_entry() {
$data = next_entries(); //get the ids of the next 6 products
$.ajax({
type: 'POST',
url: $url,
data: $data,
cache: true,
success: function(data) {
var xml = $(data);
xml.find('entry').each(function(){
var el = $($(this).text());
el.imagesLoaded(function() {
$collection.append( el ).masonry( 'appended', el, true );
el = set_visibility( el );
});
});
if ($resync) {
$collection.masonry();
}
get_next_entry();
},
dataType: 'xml',
async:true
});
}
$data
包含一系列产品ID。每个产品的HTML都由其id
缓存,因此可以在没有MySQL查询的情况下检索它们,以减少数据库服务器的负载,并且可以更快地提供服务。
我在产品上有一个jQuery过滤系统,可以切换可见性。
选择过滤器后,我只需要加载该过滤器中的产品。当取消选择过滤器后,我需要恢复加载整个目录。
我不想用多个MySQL查询来执行此操作,因为每个用户会有很多这样的查询(我的循环一次加载6个产品,因此查询每个循环周期太多)。 / p>
我目前的解决方案是AJAX将整个目录列表作为id
的XML列表,将过滤器作为属性(因此我可以轻松地使用jQuery过滤而不是JSON)然后从此列表中删除产品,因为我加载它们:
<data>
<product category="category">id</product>
<product category="category">id</product>
<product category="category">id</product>
...
</data>
有更好的方法吗?
答案 0 :(得分:0)
如果您只是想听听替代方案,可以使用JSON使用多维数组,就像这两个问题一样: 1)Get data from php array - AJAX - jQuery 2)json and multidimensional array
这可能会缩短一些时间,因为编码比XML文本短。
但是,我仍然更喜欢你的方法,因为它更容易操作和管理数据。