Javascript 拉动刷新保留 LastID 变量
Javascript pull to refresh retain LastID variable
学习所以请客气,非专业码农!好的 PHP 但是 Javascript 我是新手。
tl;dr 如何保留 JSON
中的 last id
变量以停止我的 AJAX
拉取它已有的内容?
试图让 'pull down to refresh' 正常工作,它正在运行,但我被卡住了。我有 mysql/php/ajax
罚款。我可以下拉并更新。但它会继续添加现有内容。
我研究过以不同的方式分配变量,使用 let
、var
、nothing
、window.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_highid
是 window
的 属性。此外,当您实际使用它 { 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 那样设计那么别无选择。但除非它是绝对唯一的方法,否则应该避免它。
学习所以请客气,非专业码农!好的 PHP 但是 Javascript 我是新手。
tl;dr 如何保留 JSON
中的 last id
变量以停止我的 AJAX
拉取它已有的内容?
试图让 'pull down to refresh' 正常工作,它正在运行,但我被卡住了。我有 mysql/php/ajax
罚款。我可以下拉并更新。但它会继续添加现有内容。
我研究过以不同的方式分配变量,使用 let
、var
、nothing
、window.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_highid
是 window
的 属性。此外,当您实际使用它 { 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 那样设计那么别无选择。但除非它是绝对唯一的方法,否则应该避免它。