Ajax调用有时不会打印内容

时间:2017-11-20 15:01:02

标签: php jquery ajax wordpress

我为woocommerce制作了一个AJAX过滤器,它根据属性过滤产品。

查询工作正常,它始终打印正确的产品和内容。它确实打印了一些东西。

每隔一段时间它就会运行但不添加任何HTML。如果我记录收到的数据,它显然在那里。有时html()函数不会做任何事情。

如果在完成之前的操作之前双击过滤器按钮,似乎更常出现错误。我已经尝试添加一个数据属性来检查ajax是否已完成过滤,以阻止任何调用在第一次完成之前发生。它似乎并没有真正起作用。

AJAX功能:

function getPosts(page){
var filter = $('#filter');

if(filter.length < 1){
    return false;
}
if(filter.data('loading') == true){
    return false;
}
var buttonText = $('#filter #product-ajax-submit').text();
$.ajax({
    url:filter.attr('action'),
    data:filter.serialize() + '&page=' + page, // form data
    type:filter.attr('method'), // POST
    dataType: 'json',

    beforeSend:function(xhr){
        filter.attr('data-loading', true);
        filter.find('#product-ajax-submit').text('Filtrerer...'); // changing the button label

        $('#bbh-ajax-loader').fadeIn(200, function(){

            var productsHeight = $('ul.products').outerHeight();
            $('ul.products').parent().css('height', productsHeight);
            $('ul.products').html(''); // delete current content
            $('.woocommerce-pagination').html('');
        });

    },
    success:function(data){

        $('ul.products').empty().append(data[0]);
        filter.find('#product-ajax-submit').text(buttonText); // changing the button label back

        $('.woocommerce-pagination').html(data[1]);

        $('ul.products').parent().css('height', 'auto');
        $('#bbh-ajax-loader').fadeOut(300);

        filter.find('select, button').prop( "disabled", false );

    },
    error:function(data){
        $('ul.products').html(data.responseText);
        $('ul.products').parent().css('height', 'auto');

        $('#bbh-ajax-loader').fadeOut(300);
         // insert data
        filter.find('#product-ajax-submit').text(buttonText);


    },
    complete:function(data){
        filter.attr('data-loading', false);
    }
});
}

$('#filter[data-live-sort="false"]').on('submit', function(){

    getPosts(1);
    return false;
}); 

正如我所说,如果我记录返回的数据,标记总是正确的。成功与失误。我怀疑在ul.products beforeSend上清除html可能会导致显示成功数据的问题,如果同时进行多次调用。

0 个答案:

没有答案