2009-02-05 3 views
1

У меня есть результат JSON, который содержит множество записей. Я бы хотел показать первый, но у вас есть следующая кнопка для просмотра второго и т. Д. Я не хочу, чтобы страница обновлялась, поэтому я надеюсь, что вам может помочь комбинация JavaScript, jQuery и даже сторонняя библиотека AJAX.Paging Through Records Использование jQuery

Любые предложения?

+0

Вы можете разместить образец вашей JSON? – Matty

ответ

4

Надеется, что это помогает:

var noName = { 
    data: null 
    ,currentIndex : 0 
    ,init: function(data) { 
     this.data = data; 
     this.show(this.data.length - 1); // show last 
    } 
    ,show: function(index) { 
     var jsonObj = this.data[index]; 
     if(!jsonObj) { 
      alert("No more data"); 
      return; 
     } 
     this.currentIndex = index; 
     var title = jsonObj.title; 
     var text = jsonObj.text; 
     var next = $("<a>").attr("href","#").click(this.nextHandler).text("next"); 
     var previous = $("<a>").attr("href","#").click(this.previousHandler).text("previous"); 

     $("body").html("<h2>"+title+"</h2><p>"+text+"</p>"); 
     $("body").append(previous); 
     $("body").append(document.createTextNode(" ")); 
     $("body").append(next); 
    } 
    ,nextHandler: function() { 
     noName.show(noName.currentIndex + 1); 
    } 
    ,previousHandler: function() { 
     noName.show(noName.currentIndex - 1); 
    } 
}; 

window.onload = function() { 
    var data = [ 
     {"title": "Hello there", "text": "Some text"}, 
     {"title": "Another title", "text": "Other"} 
    ]; 
    noName.init(data); 
}; 
+0

Отлично. Я на самом деле собираю плагин с тем опросом, который я упомянул вчера. Я отправлю его, как только у меня получится. Еще раз спасибо. –

+0

Прохладный, рад, что это работает, но нужно немного подстроить. –

1

Я бы лично загружать данные JSON в глобальной переменной и страницы его таким образом. Надеюсь, вы не возражаете против моих предположений в контексте данных опроса. Думаю, что я помню вас со вчерашнего дня.

var surveyData = "[{prop1: 'value', prop2:'value'},{prop1: 'value', prop2:'value'}]" 
$.curPage = 0; 

$.fn.loadQuestion = function(question) { 
    return this.each(function() { 
     $(this).empty().append(question.prop1); 
     // other appends for other question elements 
    }); 
} 

$(document).ready(function() { 
    $.questions = JSON.parse(surveyData); // from the json2 library json.org 
    $('.questionDiv').loadQuestion($.questions[0]);  

    $('.nextButton').click(funciton(e) { 
     if ($.questions.length >= $.curPage+1) 
      $('.questionDiv').loadQuestion($.questions[$.curPage++]); 
     else 
      $('.questionDiv').empty().append('Finished'); 
    }); 
}); 

~ UNTESTED

Я должен признать, что @sktrdie подход создает целый плагин для обработки опроса было бы неплохо. ИМО этот метод - действительно путь решения наименьшего сопротивления.

Смежные вопросы