学习所以请友善,不是专业编码员!对于 PHP 还可以,但对于 Javascript 我完全是新手。
tl;dr 如何保留 JSON
中的 last id
变量以阻止我的 AJAX
提取已有的内容?
试图让“下拉刷新”工作,它正在出现,但我被卡住了。我的 mysql/php/ajax
很好。我可以拉下来它就会更新。但它继续添加现有内容。
我研究了以不同方式分配变量,使用let
、var
、nothing
、window.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` 的值。
您需要将初始值移出函数范围。请检查以下内容以确保清晰度。
还有let是const是 block 作用域变量。你不应该再使用 var
。它总是要么 let或const 。阅读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/