• Как сделать ajax ленту совместно с mFilter2?

    @QTnub Автор вопроса
    Программист , музыкант , филантроп
    большое спасибо за ответ , вопрос задавал давно , и уже сам разобрался , мой вариант выглядит так

    (function(){
                    var xhr_is_sent = false,        //флаг отправки
                        page_counter = 1,
                        total_node,
                        total = 0,
                        last_page = false,        
                        url = '/assets/components/msearch2/action.php',
                        param_1 = 'tv|area',
                        param_2 = 'tv|price',
                        param_3 = 'tv|metro',
                        area_min,
                        area_max,
                        price_min,
                        price_max,
                        loader,
                        items_per_page = 10,
                        anim_time = 100;
                    
                    // оборачиваем в jQ для DOM ready
                    $(function(){
                        area_min = $('#area_0');
                        area_max = $('#area_1');
                        price_min = $('#price_0');
                        price_max = $('#price_1');
                        total_node = $('#mse2_total')
                        loader = $('.loader-content').css({opacity: '0', height: '0px', overflow: 'hidden'});
                        $('#mse2_results').on('resultsLoaded', function(){
                            page_counter = 1;
                            total = total_node.text()|0;
                            last_page = total > items_per_page ? false : true;
                        });
                        total = total_node.text()|0;
                        last_page = total > items_per_page ? false : true;
                    });
                    function showLoader(){
                        loader.stop(true).css({height: 'auto'}).animate({opacity: '1'}, anim_time, 'linear');
                    }
                    function hideLoader(){
                        loader.stop(true).animate({opacity: '0'}, anim_time, 'linear', function(){
                            loader.css({height: '0px'});
                        });
                    }
                    
                    $(window).scroll(function() {
                        var data = {},
                            url_params = window.location.search.slice(1),
                            i, max;
                        if ($(window).scrollTop() == $(document).height() - $(window).height()) {
                            //отправляем запрос только если завершился предыдущий
                            if (!xhr_is_sent && !last_page) {
                                data.action = 'filter';
                                data.pageId = window.mse2Config.pageId;
                                data.key = window.mse2Config.key;
                                data.page = ++page_counter;
                                
                                xhr_is_sent = true;
                                last_page = total > items_per_page * page_counter ? false : true;
                                
                                if (url_params.length > 0) {
                                    url_params = url_params.split('&');
                                    for(i = 0, max = url_params.length; i < max; i++) {
                                        url_params[i] = url_params[i].split('=');
                                        if (url_params[i][0] === param_1) {
                                            data[param_1] = decodeURIComponent(url_params[i][1]);
                                        }
                                        if (url_params[i][0] === param_2) {
                                            data[param_2] = decodeURIComponent(url_params[i][1]);
                                        }
                                        if (url_params[i][0] === param_3) {
                                            data[param_3] = decodeURIComponent(url_params[i][1]);
                                        }
                                    }
                                }
                                
                                showLoader();
                                
                                $.post(url, data, function(data){
                                        $('#mse2_results').append($.parseJSON(data).data.results);
                                        xhr_is_sent = false;
                                        hideLoader();
                                        $(window).trigger('ajax_loaded');
                                });
                            }
                        }
                    });
                })();
    Ответ написан
    Комментировать