我有一个让我秃顶的问题。我有一个ajax调用,它处理一个处理一些查询并为我返回帖子的循环。
到目前为止一切顺利,但是当用户第一次看到页面时我们应该加载10个帖子,然后我们要点击一个按钮再请求5个帖子。
到目前为止一切顺利。
但是当我们要求再增加5个帖子时,我们会再次获得5个帖子。
我的批处理循环
<?php
// Our include
define('WP_USE_THEMES', false);
require_once('../../../wp-load.php');
// Our variables
$posts = (isset($_GET['numPosts'])) ? $_GET['numPosts'] : 0;
$page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0;
$category = (isset($_GET['category_name'])) ? $_GET['category_name'] : 0;
var_dump($posts);
$args = array(
'posts_per_page' => $posts,
'category_name' => $category,
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
'paged' => $page
);
query_posts($args);
// $query = new WP_query($args);
// our loop
if (have_posts()) {
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts($args);
while (have_posts()){
the_post();
get_template_part( 'thumbs', get_post_format() );
}
}
// unset($page, $posts, $category);
// wp_reset_postdata();
wp_reset_query();
?>
有人看到我做错了吗?
编辑:
批处理程序
function _batchhandler() {
var getamount = localStorage.getItem('amount');
console.log('amount of posts to retrive ' + JSON.parse(getamount));
// Ajax call
$.ajax({
type: 'GET',
data: {
posts: getamount,
page: page,
category: 'work'
},
dataType: 'html',
url: 'http://dev.xxx.se/wp-content/themes/xxx/batch.php',
beforeSend: function() {
_setHeader;
if( page != 1 ) {
console.log('Loading');
// Show the preloader
$('body').prepend('<div class="preloader"><span class="rotate"></span></div>');
}
// If we reach the end we hide the show more button
if( page >= total ) {
$('.load').hide();
}
},
success: function(data) {
console.log(page);
var scroll = ($('.thumb').height() * posts);
// If thumbs exist append them
if( data.length ) {
// Append the data
$('#batch').append(data);
// Remove the crappy width and height attrs from the image * Generated by WP *
$('img').removeAttr('height').removeAttr('width');
// Animate each new object in a nice way
(function _showitem() {
$('#batch .thumb:hidden:first').addClass('show', 80, _showitem);
// On the last request do load any more
loading = false;
})();
// Remove the preloader
$('.preloader').fadeOut(200, function() {
$('.preloader').remove();
});
}
// return false;
},
complete: function() {
// Delete storage
localStorage.clear();
// Update the scroller to match the updated content length
if (scroller)
setTimeout("scroller.refresh()", 300);
// Initalize the load more button
_clickhandler();
},
error: function() {
console.log('No page found');
}
});
}
和我的加载更多按钮功能
$('.load').on('click', function(event) {
event.preventDefault();
// Delete storage
localStorage.clear();
if(!loading) {
loading = true;
// Increase our pagenumber per click
page++;
count++;
// Remove preloader
$('.preloader').remove();
setTimeout(function() {
$('#batch').css({
'-webkit-transform' : 'translateY(-' + ($('#batch li').outerHeight() * count) + 'px)'
});
}, 30);
// Clear storage and set a new
localStorage.setItem('amount', JSON.stringify(amount.medium));
var getamount = localStorage.getItem('amount');
// Send the request to the handler
_batchhandler(page);
}
});
一切似乎都很好,前10个(1-10)帖子加载应该,但第一次“加载更多”被点击我们得到接下来的5个结果,但结果是第一次加载的帖子(5- 10)。如果我们再次点击“加载更多”,我们会得到正确的结果
答案 0 :(得分:0)
我认为您没有为页面定义一个起始值,在脚本开头将其设置为1,所以当它在点击时递增时会转到第2页。否则它只会获得第一页。< / p>
答案 1 :(得分:0)
你在后端获取错误的参数,它们都解析为0。 ajax调用发送以下参数:
帖子,页面,类别
但是在你的接收器后端,你试图获取这些变量:
numPosts,pageNumber,category_name
以下内容:
$posts = (isset($_GET['numPosts'])) ? $_GET['numPosts'] : 0;
$page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0;
$category = (isset($_GET['category_name'])) ? $_GET['category_name'] : 0;
应该是:
$posts = (isset($_GET['posts'])) ? $_GET['posts'] : 0;
$page = (isset($_GET['page'])) ? $_GET['page'] : 0;
$category = (isset($_GET['category'])) ? $_GET['category'] : 0;
或者更改ajax调用中的参数名称以匹配后端中的参数名称。