过去2天我一直试图这样做,但没有成功。
这是我的代码。
var elementOffse = $('#loadComments').offset().top;
var heigh = $(window).height();
$(window).scroll(function()
{
var scrollTopp = $(window).scrollTop();
if (scrollTopp >= (elementOffse - heigh) && loaded == 0)
{
loaded = 1;
$('#loadComments').html('Downloading...'); // Show "Downloading..."
$.ajax({
type: "GET",
url: "loadComments.php"
}).done(function(data) { // data what is sent back by the php page
$('#loadComments').html(data); // display data
});
}
});
在loadComments.php中的我调用函数'comments_template();'。
我想在查询后在#loadComments中加载评论。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
Wordpress有一个内置的AJAX处理程序,使用它可以确保您的AJAX请求可以访问WP的所有优点。
我不能肯定地说没有看到日志,但是如果你正在做一些评论,那很可能涉及WP核心功能,并且由于通用AJAX调用不包括它们,可能会抛出错误
这是一些应该做的技巧 -
var elementOffse = $('#loadComments').offset().top;
var heigh = $(window).height();
$(window).scroll(function(){
var scrollTopp = $(window).scrollTop();
if (scrollTopp >= (elementOffse - heigh) && loaded == 0){
loaded = 1;
$('#loadComments').html('Downloading...'); // Show "Downloading..."
var data = {
type: 'GET',
action: 'load-comments'
};
$.post(ajax_object.ajaxurl, data, function(response){
$('#loadComments').html(response);
});
}
});
PHP - 如果您愿意,可将其放在functions.php
(或任何其他自定义文件)中 -
add_action( 'wp_ajax_nopriv_'.$_POST['ans_name'], 'my_ajax' ); // If user is not logged in
add_action( 'wp_ajax_'.$_POST['ans_name'], 'my_ajax' ); // If user is logged in
function my_ajax(){
{...do your comments stuff here...}
die(); // Required for a proper Wordpress AJAX result
}
最后,为了确保正确处理未登录用户的AJAX请求(nopriv挂钩),请将其添加到functions.php
(或任何其他自定义包含的文件,如果您愿意)。
<?php
add_action('wp_head', 'plugin_set_ajax_url');
function plugin_set_ajax_url() {
?>
<script type="text/javascript">
var ajax_object = {};
ajax_object.ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
<?php
}
?>