首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在单击“下一步”按钮时,才移动到分页API中的下一页,直到到达最终页(totalPages)为止。

仅在单击“下一步”按钮时,才移动到分页API中的下一页,直到到达最终页(totalPages)为止。
EN

Stack Overflow用户
提问于 2021-12-22 07:01:19
回答 1查看 729关注 0票数 1

我正在使用的TMDB搜索API,其中有各自的电影数据,即名称,图像,descrp。所以当我搜索关键字"New“时,API会返回所有电影,其中包含"New”这个词。API是分页的,每页只返回20个结果。另外,我的HTML也是分页的,每页显示20个结果。我想要实现的是,当我单击HTML分页的next按钮时,应该用&page=2触发API,并在HTML 2上呈现API 2的结果。

从API的第一页检索数据的代码。

代码语言:javascript
复制
const searchMovies = function (searchValue) {
  let page = 1;

  do {
    fetch(searchAPIURL + "&query=" + searchValue + `&page=${page}`)
      .then((response) => response.json())
      .then((data) => {
        console.log(data);
        let totalPages = data.total_pages;

        let searchResults = data.results;
        console.log(searchResults);
        searchMovieInit(searchResults);
      });
  } while (totalPages);
};

下一个按钮

代码语言:javascript
复制
const nextBtn = document.getElementById("next-btn");
EN

回答 1

Stack Overflow用户

发布于 2021-12-31 11:32:28

我将禁用类添加到所有-1中,并将禁用类移除到当前页面前面的任何内容。每当有人单击next按钮时,pageCall就会被调用,该按钮接受下一个数字,并以"https://api.themoviedb.org/3/trending/tv/week?api_key=###&page=2“作为url回忆getmovies函数。

pageCall函数将url拆分为"https://api.themoviedb.org/3/trending/tv/week?“中的"api_key=###&page=2”,这使得数组url拆分,然后将"api_key=###&page=2“(在"api_key=###”中为urlspilt1 )和"page=2“(称为queryParams )拆分,然后接受查询并拆分具有queryparams长度的查询- lenght -1。

代码语言:javascript
复制
const prev = document.getElementById("prev");
const next = document.getElementById("next");
const current = document.getElementById("current");

let currentPage = 1;
let NextPage = 2;
let prevPage = 3;
let lastUrl = "";
let totalpages = 100;


function getMovies(url) {
  lastUrl = url;
  fetch(url)
    .then(res => res.json())
    .then(data =>
      if (data.length !== 0) {
        showMovies(data.results);
        currentPage = data.page;
        NextPage = currentPage + 1;
        prevPage = currentPage - 1;
        totalpages = data.total_pages;
        current.innerText = currentPage;
        if (currentPage <= 1) {
          prev.classList.add("disabled");
          next.classList.remove("disabled");
        } else if (currentPage >= totalpages) {
          prev.classList.remove("disabled");
          next.classList.add("disabled");
        } else {
          prev.classList.remove("disabled");
          next.classList.remove("disabled");
        }

      }
    });
}

next.addEventListener("click", () => {
    if (NextPage <= totalpages) {
        pageCall(NextPage);
    }
});

prev.addEventListener("click", () => {
    if (prevPage > 0) {
        pageCall(prevPage);
    }
});

function pageCall(page) {
    let urlsplit = lastUrl.split("?");
    let queryParams = urlsplit[1].split("&");
    let key = queryParams[queryParams.length - 1].split("=");
    if (key[0] != "page") {
        let url = lastUrl + "&page=" + page;
        getMovies(url);
    } else {
        key[1] = page.toString();
        let a = key.join("=");
        queryParams[queryParams.length - 1] = a;
        let b = queryParams.join("&");
        let url = urlsplit[0] + "?" + b;
        getMovies(url);
    }
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70445323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档