在JQuery中将分页添加到URL JSON请求

时间:2015-07-25 19:11:17

标签: jquery json jsonp getjson

如何将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":[]
}

1 个答案:

答案 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);
}

这非常宽松,需要对值进行一些验证,但应该给你概念开始。