修复搜索分页功能
- 后端搜索API支持offset参数,返回总数用于分页 - 前端传递offset参数实现正确分页
This commit is contained in:
+9
-5
@@ -31,16 +31,20 @@ def search_articles():
|
||||
"""搜索文章"""
|
||||
keyword = request.args.get('q', '')
|
||||
category = request.args.get('category')
|
||||
limit = request.args.get('limit', type=int) # 支持limit参数
|
||||
limit = request.args.get('limit', type=int)
|
||||
offset = request.args.get('offset', 0, type=int)
|
||||
|
||||
if not keyword:
|
||||
return jsonify({'error': '请提供搜索关键词'}), 400
|
||||
|
||||
articles = db.search_articles(keyword, category)
|
||||
all_articles = db.search_articles(keyword, category)
|
||||
total_count = len(all_articles)
|
||||
|
||||
# 如果有limit参数,截取
|
||||
# 分页截取
|
||||
if limit:
|
||||
articles = articles[:limit]
|
||||
articles = all_articles[offset:offset + limit]
|
||||
else:
|
||||
articles = all_articles
|
||||
|
||||
# 解析JSON字段
|
||||
for article in articles:
|
||||
@@ -50,7 +54,7 @@ def search_articles():
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'articles': articles,
|
||||
'count': len(articles)
|
||||
'count': total_count # 返回总数,用于分页
|
||||
})
|
||||
|
||||
@bp.route('/<int:article_id>', methods=['GET'])
|
||||
|
||||
@@ -49,10 +49,10 @@ async function loadArticles() {
|
||||
});
|
||||
|
||||
if (keyword) {
|
||||
// 搜索时也传递 limit 参数
|
||||
// 搜索时也传递 limit 和 offset 参数
|
||||
let searchUrl = `${API_BASE}/api/articles/search?q=${encodeURIComponent(keyword)}`;
|
||||
if (category) searchUrl += `&category=${encodeURIComponent(category)}`;
|
||||
searchUrl += `&limit=${pageSize}`;
|
||||
searchUrl += `&limit=${pageSize}&offset=${(currentPage - 1) * pageSize}`;
|
||||
|
||||
const response = await fetch(searchUrl);
|
||||
const data = await response.json();
|
||||
|
||||
Reference in New Issue
Block a user