【问题标题】:jQuery pagination will not rebind after AJAX calljQuery 分页不会在 AJAX 调用后重新绑定
【发布时间】:2014-07-23 18:51:17
【问题描述】:

我有一个搜索结果屏幕,其中显示了许多行,然后使用jPages plugin 以非常简单的方式对其进行分页。这很好用。执行此操作的代码如下

  <script type="text/javascript">
        function paginate() {
            $('div.holder').jPages({
                containerID: 'searchResults',
                perPage: 5
            });
        }

        $(function(){
            paginate();
        });
  </script>

jPage 插件快速入门 - 我有一个表格,其中正文具有标识符“searchResults”,然后在表格底部有一个名为“holder”的 div。 jQuery 插件自动遍历所有元素并创建页面,并将实际分页放置在 'holder' div 元素中。

现在,当用户单击屏幕上的特定复选框时,会进行 AJAX 调用以刷新搜索结果,并且该表会重新填充该 AJAX 调用的内容。这也可以正常工作 - 相同的代码如下 -

$(function() {
    $('.dark-checkbox').click(function(e) {
        var data = $('#search-form').serialize();
        refreshSearchResults(data);

        paginate();
        e.preventDefault();
        e.stopPropagation();
    });     
});

function refreshSearchResults(data) {
    if (data.length==0) { 
        return;
    }

    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else {  // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            document.getElementById("search-results").innerHTML=xmlhttp.responseText;
        }
    };

    xmlhttp.open("GET","candidate_search_results.php?"+data,true);
        xmlhttp.send();
}

如您所见,我已尝试根据搜索结果刷新重新生成分页,这是点击处理程序中的最后一步。

分页重新生成,但只是一页 - 换句话说,插件似乎并没有真正正常工作并创建正确的分页流程。我也尝试在代码的其他部分中调用“重新分页”,但它似乎也不起作用。谁能帮我弄清楚我做错了什么?提前谢谢你...

【问题讨论】:

    标签: jquery ajax pagination


    【解决方案1】:

    解决了 - 用一段真正的 jQuery AJAX 代码替换了非 jQuery AJAX 方法。基本上,我用下面的代码替换了 refreshSearchResults() 方法——这成功了

    $(function(){
        $('#search-form').find('.dark-checkbox').click(function(){
            alert($('#search-form').serialize());
            $.ajax({
                type:'GET',
                url:$('#search-form').attr('action'),
                data:$('#search-form').serialize(),
                success:function(response){
                    $('#search-results').html(response);
                    paginate();
                }
            });
        });
    });
    

    【讨论】:

    • 如果您在更新onreadystatechange 回调中的内容后调用paginate,它可能会在原始示例中起作用。 +1 使用 $.ajax,如果你仍然使用 jQuery。
    • 谢谢 - 我没有想到那个选项。将记住这一点以供将来参考
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    相关资源
    最近更新 更多