0

我在 home.php 中构建了两个函数来在我的提要中加载 +10 个帖子。它加载了两个新帖子,但有一个缺陷。它复制了它所包含的整个 home.php。即标题、提要、状态保持器和加载更多选项卡。我不知道为什么。我怎样才能阻止这种情况发生。也许将流放在自己的页面中并自行调用它?

<script>
var global_streamcount=20;
function refreshstream()
{
$.ajax({
method: 'get',
url : 'home.php?limit='+global_streamcount,
dataType : 'text',
success: function (text) { $('#homestatusid').prepend(text); }
});
}
</script>
<script>
function checkautoload(){
global_streamcount=global_streamcount+10;loadstream('home.php','homestatusid',global_streamcount);
}
</script>

加载更多

<div class="stream_show_posts" onClick="global_streamcount=global_streamcount+10;refreshstream();">Show More Posts</div>    

PHP

if(isset($_GET['limit'])){
$sqllimit = $_GET['limit'];
}else{
$sqllimit = 20;
}
$call="SELECT * FROM streamdata WHERE streamitem_target= $following_string OR streamitem_creator = $following_string OR streamitem_creator IN $friendlist AND streamitem_target IN $friendlist ORDER BY streamitem_timestamp DESC LIMIT $sqllimit";
4

2 回答 2

1

调用应该是另一个脚本,但如果你想保留在同一个文件中,你必须退出你的脚本并只输出从数据库中获取的项目..类似于:

if(isset($_GET['limit'])){

    if(isset($_GET['limit'])){
        $sqllimit = (int)$_GET['limit'];
    }else{
        $sqllimit = 20;
    }
        $call="SELECT * FROM streamdata WHERE streamitem_target= $following_string OR streamitem_creator = $following_string OR streamitem_creator IN $friendlist AND streamitem_target IN $friendlist ORDER BY streamitem_timestamp DESC LIMIT $sqllimit";

    echo "<div>Your contents echoed with results from db</div>"
    die;

}
// rest of the page ..
于 2012-09-06T07:21:18.743 回答
0

我会使用load() 函数来完成这个:

<div class="stream_show_posts">Show More Posts</div>
<script>
    $('div.stream_show_posts').on('click', function() {
        global_streamcount=global_streamcount+10;
        $('#your_posts_div_element').load('home.php?limit='+global_streamcount+' #your_posts_div_element');
    });
</script>

该函数基本上将从名为“your_posts_div_element”的元素中获取所有数据,并将旧数据替换为页面上的同一元素。

另外,请注意,不再建议直接在元素中使用 onClick 处理程序 - 我使用 on() 函数将点击事件分配给您的 DIV。

于 2012-09-06T07:25:45.253 回答