如何有效加载过滤后的AJAX内容?

时间:2014-07-09 10:29:04

标签: javascript php jquery mysql ajax

我正在使用带有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>

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

如果您只是想听听替代方案,可以使用JSON使用多维数组,就像这两个问题一样: 1)Get data from php array - AJAX - jQuery 2)json and multidimensional array

这可能会缩短一些时间,因为编码比XML文本短。

但是,我仍然更喜欢你的方法,因为它更容易操作和管理数据。