Je fais un peu de personnalisation à ce script de pagination jQuery J'ai trouvé ici Paging Through Records Using jQuerysi index> 0: boucle; autre: faire une seule fois (JSON & jQuery)
J'ai la recherche de personnes travaillant bien, et il gère différentes réponses javascript de façon appropriée.
J'ai un problème cependant. La réponse s'attend à ce que le JSON ait un index/tableau.
90% du temps, j'ai plusieurs entrées dans mon JSON, mais parfois je n'ai qu'un seul élément renvoyé. Cela entraîne des entrées nulles.
Voici le code que j'ai
var pagedContent = {
data: null
,holder: null
,currentIndex : 0
,init: function(data, holder) {
jQuery("body").data(holder,data);
this.holder=holder;
this.show(0, holder); // show last
}
,show: function(index, holder) {
this.data=jQuery("body").data(holder);
if(!this.data){
return;
}
var j=2;
if(this.data.length-index<=j){
j=this.data.length-index-1;
}
var jsonObj = this.data[index];
if(!jsonObj) {
return;
}
var holdSubset="";
for(i=0;i<=j;i++){
jsonObj=this.data[index+i];
this.currentIndex = index;
if(this.holder=="id1"){
var theResultVariables = jsonObj.whatever
var resultInput='<div class="putstuff">'+theResultVariables+'</div>';
}
if(this.holder=="id2"){
var theResultVariables = jsonObj.whatever
var resultInput='<div class="putstuff2">'+theResultVariables+'</div>';
}
holdSubset= holdSubset+resultInput;
}
jQuery("body").html("<div id=\"counter\">"+parseFloat(index+1)+" to "+ parseFloat(index+j+1)+" of "+this.data.length+"</div>"+holdSubset+"<div class=\"prevNext\"></div>");
if(index!=0){
var previous = jQuery("<a >").attr("href","#").click(this.previousHandler).text("< previous").data("whichList",this.holder).data("thisIndex",index - 2-1);
jQuery("body").append(previous);
}
if(index+i<this.data.length){
var next = jQuery("<a class=\"next\">").attr("href","#").click(this.nextHandler).text("next >").data("whichList",this.holder).data("thisIndex",index + 2 +1);
jQuery("body").append(next);
}
}
,nextHandler: function() {
pagedContent.show(jQuery(this).data("thisIndex"), jQuery(this).data("whichList"));
return false;
}
,previousHandler: function() {
pagedContent.show(jQuery(this).data("thisIndex"), jQuery(this).data("whichList"));
return false
}
};
Je sais que je peux ajouter un autre chèque
var jsonObj = this.data[index];
if(!jsonObj){
var jsonObj=this.data;
}
if(!jsonObj) {
return;
}
puis plus bas
jsonObj=this.data[index+i];
if(!jsonObj){
jsonObj=this.data;
}
Mais je ne pense que c'est probablement le moyen le plus efficace de le faire. Des idées?
@pedalpete: Je sais qu'il est tentant d'envoyer tout votre code, mais ... pas. 95% (probablement plus) du code que vous avez posté ici n'a rien à voir avec votre problème réel. Vous forcez tout le monde à le lire et à arriver à cette conclusion. Trouver l'exemple de code * abstract * minimal qui reproduit votre problème aide tout le monde, y compris ceux qui pourraient avoir un problème similaire dans une forme différente et venir ici via la recherche. – Tomalak
J'ai effectivement supprimé un tas de code, mais peut-être pas assez. Je voulais donner assez de contexte pour ne pas laisser de questions. J'apprends cet acte d'équilibrage. Je vais essayer de faire mieux. – pedalpete