打印foreach块并使用更多按钮显示它们

时间:2014-02-04 01:19:46

标签: php jquery html ajax

我需要帮助..

我有一个用foreach循环打印的项目列表.. 当我点击“显示其他”按钮时,我需要一次打印25个项目,为此我使用了LimitIterator。

我还需要在不重新加载页面的情况下执行此操作,因为我使用了AJAX。 我的问题是我需要计算已打印的项目数量,以便按钮显示其他项目获取此信息,每次使用此按钮时,它会使用foreach循环打印接下来的25个项目(在前25个项目下)我包含在一个函数中。

我该怎么办?提前谢谢。

getForeach.php

public static function spawn_list($list_start = 0, $list_limit = 25, $n = 0) {
......
    $items = new ArrayIterator($items);
    echo '<ul class="my_list">';
    foreach (new LimitIterator($items, $list_start, $list_limit) as $item){
        $n++;
        echo '<li>';
        echo '<span class="views">'.$item->viewers.'Viewers</span>';
        echo '<span class="name">'.$item->name->display_name.'</span>';
        echo '</li>';
    }
    echo '</ul>';
 }

if(isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
    switch($action) {
        case 'more_items' : spawn_list();break;
    }
}

AJAX脚本

$('#more_button').click(function(){
        $.ajax({
            type : "POST",
            url : '/getForeach.php',
            data:{action: 'more_items'},
            async : true,
            cache : false,
            success : function(output) {
                $("#test").html(output);
            },
            error : function (output) {
                alert("error");
            }
        });
        return false;
    });

MYPAGE

 <div id="test"></div>
        <a href="javascript:void(0);" id="more_button">SHOW OTHER</a>

EIDT:我出于性能原因需要这样做。欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

在隐藏的输入字段中存储已返回的项目数

<input type='hidden' name='item_count' value='' />

在ajax调用中获取此值并将其传递给脚本,您可以创建一些逻辑来返回所需内容,如果是数据库查询则考虑使用LIMIT

您还希望更改成功功能以使用.append()使用.html()只会替换已设置的HTML。