我正在尝试将Ajax添加到我的主题中,以便动态加载我的帖子。下面的代码可以工作,但由于某种原因,当我使用另一个div包装触发加载的按钮时,它什么都不做。
完整代码:https://pastebin.com/8DhmC32R
JS公司
jQuery(function($){
$(\'.loadmore\').click(function(){
var button = $(this),
data = {
\'action\': \'loadmore\',
\'query\': loadmore_params.posts,
\'page\' : loadmore_params.current_page
};
$.ajax({
url : \'/wp-admin/admin-ajax.php\',
data : data,
type : \'POST\',
beforeSend : function ( xhr ) {
button.text(\'Loading...\');
$(\'.loadmore\').addClass(\'newcomment\');
},
success : function( data ){
if( data ) {
button.text( \'More posts\' ).prev().before(data);
$(\'.loadmore\').removeClass(\'newcomment\');
loadmore_params.current_page++;
if ( loadmore_params.current_page == loadmore_params.max_page )
button.remove();
} else {
button.remove();
}
}
});
});
});
问题是:
<div><button class="loadmore">Load More</button></div>
它在没有div类的情况下工作
最后,这是我第一次使用管理ajax。前端的php用于我的方法安全吗?
非常感谢。
最合适的回答,由SO网友:Tony Djukic 整理而成
在trunks(OP)和我进行了一次聊天之后,下面是我们发现的问题。
在里面success
在AJAX中,有一系列连锁的指令。.text().prev().before();
一旦按钮被添加到div中,这本身就是一个问题,因为新帖子出现在按钮之前,但按钮正在更改,等等。
因此,这是解决问题的方法,分离所采取的操作,并以父div和按钮为目标(这只是AJAX的“成功”部分,其余部分都是有效的。)
success : function( data ){
if( data ) {
//this loads the new posts from the ajax callback
$( \'.show-more\' ).prev().before(data);
//this modifies the button
button.text( \'More posts\' );
$(\'.loadmore\').removeClass(\'newcomment\');
loadmore_params.current_page++;
if ( loadmore_params.current_page == loadmore_params.max_page )
button.remove();
} else {
button.remove();
}
}