Javascript 拉动刷新保留 LastID 变量

Javascript pull to refresh retain LastID variable

学习所以请客气,非专业码农!好的 PHP 但是 Javascript 我是新手。

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

试图让 'pull down to refresh' 正常工作,它正在运行,但我被卡住了。我有 mysql/php/ajax 罚款。我可以下拉并更新。但它会继续添加现有内容。

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

today为页面,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_highidwindow 的 属性。此外,当您实际使用它 { article_id: today_highid } 时,您只是在函数范围内引用 var 。不是 window.today_highid`.

的值

您需要将初始值移出函数作用域。检查下面的清晰度。

还有let are const are block scoped variables. You should never use var anymore. It's always either let or const. Read up on 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 那样设计那么别无选择。但除非它是绝对唯一的方法,否则应该避免它。