为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery AJAX 调用不在 Wordpress 中返回结果

jQuery AJAX 调用不在 Wordpress 中返回结果

PHP
胡说叔叔 2023-06-18 18:04:02
我正在尝试在我的 Wordpress 应用程序中构建一个“加载更多”按钮,但 AJAX 返回值始终为“成功:false”,即使我知道数据库中还有更多帖子。我遵循了在 YouTube 上找到的教程,但不确定我遗漏了什么。JSjQuery(document).ready(function () {  const button = document.getElementById('loadmore');  button.addEventListener('click', () => {    let current_page = document.querySelector('#main-content').dataset.page;    // let max_pages = document.querySelector('#main-content').dataset.max;    const params = {      'action': 'load_more_posts',      'current_page': current_page    }    $.post('/wp-admin/admin-ajax.php', params, (data) => {      console.log(data);    });  });})PHP (函数.php)wp_enqueue_script('loadmore', get_template_directory_uri() . '/js/loadmore.js', array('jquery'), filemtime(get_template_directory() . '/js/loadmore.js'));add_action('wp_ajax_nopriv_load_more_posts', 'load_more_posts');add_action('wp_ajax_load_more_posts', 'load_more_posts');function load_more_posts() {    $next_page = $_POST['current_page'] + 1;    $query = new WP_Query([        'posts_per_page' => 12,        'paged' => $next_page    ]);    if ($query->has_posts()):        ob_start();    while($query->have_posts()) : $query->the_post();        get_template_parts('partials/blog','posts');    endwhile;    wp_send_json_success(ob_get_clean());    else:        wp_send_json_error('no more posts');    endif;}返回结果依旧是:data: "no more posts"success: false
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

通常也让我感到困惑的一件事是,您的 ajax 函数应该始终以函数调用结束wp_die();,否则它将始终返回0,即使您的其余代码是正确的。


在这种情况下:


function load_more_posts() {

    $next_page = $_POST['current_page'] + 1;

    $query = new WP_Query([

        'posts_per_page' => 12,

        'paged' => $next_page

    ]);

    if ($query->have_posts()):

        ob_start();

        while($query->have_posts()) : $query->the_post();

            get_template_parts('partials/blog','posts');

        endwhile;

        wp_send_json_success(ob_get_clean());

    else:

        wp_send_json_error('no more posts');

    endif;


    wp_die();


}


查看完整回答
反对 回复 2023-06-18
?
白板的微信

TA贡献1883条经验 获得超3个赞

看起来你传递了错误的当前页码,让 current_page = document.querySelector('#main-content').dataset.page; 中有什么???



查看完整回答
反对 回复 2023-06-18
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信