我能够从API接收数据,并且我能够单独使用js对测试数据进行分页。
但是,我无法将它们合并在一起,从而无法从callback()函数获得分页的结果。
#Not my code, but I have tested it, works nicely.
var current_page = 1;
var records_per_page = 2;
var objJson = [
{ adName: "AdName 1"},
{ adName: "AdName 2"},
];
function prevPage(){
if (current_page > 1) {
current_page--;
changePage(current_page);
}
}
function nextPage(){
if (current_page < numPages()) {
current_page++;
changePage(current_page);
}
}
function changePage(page){
var btn_next = document.getElementById("btn_next");
var btn_prev = document.getElementById("btn_prev");
var listing_table = document.getElementById("listingTable");
var page_span = document.getElementById("page");
if (page < 1) page = 1;
if (page > numPages()) page = numPages();
listing_table.innerHTML = "";
for (var i = (page-1) * records_per_page; i < (page *records_per_page); i++) {
listing_table.innerHTML += objJson[i].adName + "<br>";
}
page_span.innerHTML = page;
if (page == 1) {
btn_prev.style.visibility = "hidden";
} else {
btn_prev.style.visibility = "visible";
}
if (page == numPages()) {
btn_next.style.visibility = "hidden";
} else {
btn_next.style.visibility = "visible";
}
}
function numPages()
{
return Math.ceil(objJson.length / records_per_page);
}
window.onload = function() {
changePage(1);
};
下面是从API获取数据的callback()函数:
var glo_var;
function callback(data){
glo_var = data;
}
function codeAddress(address) {
geocoder.geocode({ 'address': address},
function(response, status) {
if(status == 'OK'){
var senddata = $.get('/myurl',{params}, function (data){ callback(data) });
}
});
}
现在,将它们合并在一起时遇到问题。我所能做的就是将数据存储在glo_var
中,然后在changePage()
中使用它,就像在上面的代码块中使用var objJson
一样。显然,我的callback()函数将简化为用于保存JSON数据的函数。这是正确的方法吗?
P.S-我知道我可以使用Jquery分页插件,我只是想学习js,在其中非常差。
编辑:HUURRRAAAHHH我做到了!!我将changePage()放入callback()并使用了嵌套函数。