You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

AJAX加载博客评论分页时返回错误URL问题

解决AJAX加载评论后分页URL错误的问题

我来帮你排查这个评论分页的URL跑偏问题——这种情况十有八九是因为blog_comments.php返回的评论HTML里,分页链接的生成逻辑没跟上原文章的URL上下文,反而默认用了自身脚本的路径导致的。下面给你几个具体的解决思路:

1. 修正评论模板里的URL生成逻辑

别用相对路径拼分页链接!原文章的URL是http://localhost/designv2/blog/read/3/lorem-ipsum/1/,分页应该在这个基础上改最后一页的数字,而不是从blog_comments.php出发。

比如原来模板里如果是这么写的:

<a href="./<?php echo $page; ?>"><?php echo $page; ?></a>

这就会变成相对于blog_comments.php的路径,直接改成基于原文章的基础URL来拼:

// 可以在AJAX请求时把原文章的基础URL传过来,或者从请求头里取
$baseUrl = $_GET['base_url']; // 假设前端传了这个参数
echo '<a href="' . $baseUrl . $page . '/">' . $page . '</a>';

2. 前端AJAX请求时传递原文章的基础路径

点击分页按钮发起请求时,把当前文章的“干净”URL(去掉最后一页的数字)传给blog_comments.php,让后端能用这个路径拼正确的分页链接。

前端代码示例:

$('.pagination-link').on('click', function(e) {
    e.preventDefault();
    const targetPage = $(this).data('page');
    // 提取原文章的基础URL:去掉最后一个数字部分
    const baseUrl = window.location.href.replace(/\/\d+\/$/, '/');
    
    $.ajax({
        url: 'modules/blog_comments.php',
        type: 'GET',
        data: {
            page: targetPage,
            base_url: baseUrl,
            post_id: 3, // 可以顺便把文章ID、slug也传过去,更稳妥
            post_slug: 'lorem-ipsum'
        },
        success: function(html) {
            $('#comments-section').html(html);
        }
    });
});

3. 后端用绝对URL生成分页链接

blog_comments.php里直接生成完整的绝对URL,彻底避免相对路径的坑。比如先定义网站的根URL常量:

define('SITE_ROOT', 'http://localhost/designv2/');

然后用传过来的文章ID、slug和页码拼出正确的URL:

$postId = $_GET['post_id'];
$postSlug = $_GET['post_slug'];
$currentPage = $_GET['page'];

$paginationUrl = SITE_ROOT . 'blog/read/' . $postId . '/' . $postSlug . '/' . $currentPage . '/';
echo '<a href="' . $paginationUrl . '">' . $currentPage . '</a>';

核心逻辑就是:让后端生成分页链接时,锚定原文章的URL路径,而不是blog_comments.php的路径。选上面任何一种方法都能解决这个问题~

内容的提问来源于stack exchange,提问作者Rajohan

火山引擎 最新活动