Javascript拉动刷新保留LastID变量

标签 javascript ajax html-framework-7 pull-to-refresh

学习所以请友善,不是专业编码员!对于 PHP 还可以,但对于 Javascript 我完全是新手。

tl;dr 如何保留 JSON 中的 last id 变量以阻止我的 AJAX 提取已有的内容?

试图让“下拉刷新”工作,它正在出现,但我被卡住了。我的 mysql/php/ajax 很好。我可以拉下来它就会更新。但它继续添加现有内容。

我研究了以不同方式分配变量,使用letvarnothingwindow.variable。 如果有任何区别,请使用Framework7

今天是页面,highid是JSON返回的最高id号。当调用 get 时,会将 highid 提供给 mysql 以获取更新的内容。 PHP/JSON/AJAX 部分有效。但找不到下次设置变量的方法。

var html = '';

// Pull to refresh on Today tab
$$('.ptr-content').on('ptr:refresh', function (e) {

  setTimeout(function () {


 if (typeof today_highid === 'undefined') {
      var today_highid = 5;
    }
    app.request.json('/__php/json1.php', { article_id: today_highid }, function (data) {

      for(var i = 0; i < data['article'].length; i+=1){

         html+=
            '<div class="title-container">'+
            '<span class="title-date">Tuesday 19 March</span>'+
            '<h1>' +data['article'][i]['article_title']+ '</h1>'+
            '</div>'+
            '<a href="/single/">'+
            '<div class="card">'+
            '<img class="card-image" src="img/thumb-14.jpg" alt="">'+
            '<div class="card-infos">'+
            '<h2 class="card-title">' +data['article'][i]['article_content']+ '</h2>'+
            '<div class="card-bottom">'+
            '<div class="card-author">'+
            '<img class="card-author-image" src="img/authors/author-1.jpg" alt="">'+
            '<div>Camille Aline</div>'+
            '</div>'+
            '<div class="card-comments"><i class="f7-icons">chat_bubble_fill</i></i>' +today_highid+ '</div>'+
            '</div>'+
            '</div>'+
            '</div>'+
            '</a>';


      }
      //$$('.data-table table').html(tableHtml);
      // Prepend new list element
      $$('.ptr-content').find('#today-content').prepend(html);

      window.today_highid = data['status']['highid'];


    });

感谢任何帮助,或者指向一个好的工作教程,谢谢!

最佳答案

问题是您有 window.today_highid = data['status']['highid']; 但您将其设置为 var Today_highid = 5 函数内部。这是不一样的。 today_highid窗口 的属性。此外,当您实际使用它时,您只是在函数作用域中引用 var 。不是 window.today_highid` 的值。

您需要将初始值移出函数范围。请检查以下内容以确保清晰度。

还有letconst是 block 作用域变量。你不应该再使用 var 。它总是要么 letconst 。阅读Javascript gotchas .

let todayHighId = 5; //default

$$('.ptr-content').on('ptr:refresh', function (e) {

  setTimeout(function () {

    app.request.json('/__php/json1.php', { article_id: todayHighId }, function (data) {

      let { article, status } = data; // I assume article is a property of data. So deconstruct the data object to get the properties
      let lastArticleId = article[article.length - 1]

      for(let i = 0; i < article.length i+=1){
       ....
      }

      todayHighId = status.highid;


    });
}

顺便说一句,您应该避免使用 _ 声明变量并使用 [] 访问对象的属性。我知道如果 API 是这样设计的,那就别无选择。但应该避免它,除非它绝对是唯一的方法。

关于Javascript拉动刷新保留LastID变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61443193/

相关文章:

javascript - 获取通过 Office/Graph API 设置的 Outlook 加载项 (js) 中的 SingleValueExtendedProperties?

javascript - 父级上的 jQuery 单击事件,但找到子(单击)元素

javascript - 从 Google 表格中删除所有未使用的行和列

javascript - 如何在 Symfony 3 中以 Json 形式从存储库返回对象

javascript - Framework7 : Split view degrading to tab bar?(组合示例)

javascript - 在 UL 标签之外输入文本,可以吗?

javascript - 使用javascript获取用户名到sql select中where子句的值

java - 通过 ajax 将 blob 发送到 servlet

css - 具有多个框架的单页 Web 应用程序具有重复的类名

javascript - CORS - 服务器端 cookie 未保存在 chrome 浏览器中