分页打破加载了ajax请求的页面

时间:2015-11-02 16:54:51

标签: jquery ajax

我有一个加载了ajax帖子的分页列表,所以如果我使用分页链接(更进一步或者后退),它会重新加载页面以通过get发送页码。

我正在寻找一种使用分页链接发送相同变量(来自ajax帖子)的方法,但我想保留带有get(?page=x)的url。有没有办法做到这一点?

我不想使用全局或会话变量(不安全)。

有什么建议吗?

当我点击搜索时,这就是触发的内容:

$('body').on('click', '.click, .pag_link', function() { // search button and change page

    if($(this).is('.click'))
        var url = '/search';
    else {
        if ($(this).text() == '«')
            var url = '/search?page=' + (parseInt($('.active').text()) - 1);
        else if ($(this).text() == '»')
            var url = '/search?page=' + (parseInt($('.active').text()) + 1);
        else
            var url = '/search?page=' + parseInt($(this).text());
    }

    if ($('#res_prop').is(':checked')) {
        var prop_type = $('#res_prop').val(),
            checkbox = '#res_prop';
    }
    else if ($('#com_prop').is(':checked')) {
        var prop_type = $('#com_prop').val(),
            checkbox = '#com_prop';
    }
    else {
        $('p.error').show();
        die();
    }

    $.ajax({
        method: 'POST',
        url: url,
        data: {
            'do': getUrlParameter('do'),
            'prop_type': prop_type,
            'city': $('select[name="city"]').val(),
            'zone': $('select[name="zone"]').val()
        }
    }).done(function(data) {
        var new_content = $(data).find('#search');
        $( "#search" ).html( new_content );
        alert(url);
        if ($(checkbox).length > 0)
            $(checkbox).prop('checked', true);
    });

    return false;
});

Ajax加载一个列表,并在底部加入分页,如果我单击下一个/一个数字,则页面重新加载以发送get参数,页面从头开始(我必须再次单击搜索)。

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情。这只是一个伪代码,但应该让你知道如何处理。

var page;

$("input:button, a").on("click",function()
{
   page = !$(this).is("input:button") ? "?page=" + parseInt($(this).text()) + "" : "";
   $.ajax({
        method: "POST",
        url: "/search" + page,
        data: {
            'do': getUrlParameter('do'),
            'prop_type': prop_type,
            'city': $('select[name="city"]').val(),
            'zone': $('select[name="zone"]').val()
        }
    }).done(function(data) {
        var new_content = $(data).find('#search');
        $( "#search" ).html( new_content ); // here's the list and the pagination links       
    }); 

});

示例:http://jsfiddle.net/kgxm1rrf/2/