如何将Paging添加到我的JSON解析器代码中?
function appendPost(__, post) {
var title = $('<div/>')
.addClass('post_title')
.text(post.post_title);
var content = $('<div/>')
.addClass('post_content')
.text(post.post_content);
$('#test')
.append(title)
.append('<br/>')
.append(content);
}
function processResults(parsed_json) {
var posts = parsed_json.result || [];
$('#test').empty();
$.each(posts, appendPost);
}
jQuery(document).ready(function($) {
$.getJSON("https//website-API-json.com/string")
.then(processResults);
});
我一直想弄明白,但似乎无法做到正确。
JSON结果有服务器分页,但我似乎无法动态地更改/请求新的结果页面。
任何想法?
这是JSON的输出
{
"respond":1,
"paging":{
"stillmore":0,
"perpage":10,
"callpage":1,
"next":2,
"previous":0,
"pages":1,
"result":"1"
},
"message":"",
"result":[]
}
答案 0 :(得分:0)
我的建议是构建一个缓存对象来存储响应。然后,如果您在向后移动分页时已经缓存了数据,则可以进行即时数据访问,而不需要再次调用服务器。
var cache={
activeRequest:null,
pages:{}
}
function cacheResponse(resp) {
// update cache with new response
cache.pages[parsed_json.paging.callingpage] = parsed_json;
$.extend(cache.activeRequest, parsed_json);
}
function getData(page) {
$.getJSON("https//website-API-json.com/string?page=" + page).done(function (response) {
processResults(response);
cacheResponse(response);
});
}
然后在您的分页逻辑中:
if(cache.pages[ page_number]){
// use existing data when we have it available
processResults(cache.pages[ page_number]);
}else{
// otherwise get from server
getData(page_number);
}
这非常宽松,需要对值进行一些验证,但应该给你概念开始。