повторять массив json, разбивать и затем отображать в коллекциях по 5 одновременно (Laravel, Ajax, Carbon)

-1

Как разработчик новичка, он взял меня на поиски высокого и низкого уровня, прежде чем решиться на пост для справки, я не совсем понимаю правильные синтаксические фразы для поиска, я думаю, поэтому я не нашел правильного решения.

В базовом объяснении: Im, использующий laravel и Carbon для отображения дат в течение следующих 60 дней, Carbon возвращает даты просто отлично, и laravel возвращает ответ в формате json примерно так:

  0: "Tuesday 10th May 2016 "
  1: "Wednesday 11th May 2016"
  2: "Thursday 12th May 2016"

И так далее.... Так что в моем html у меня есть div, который содержит 5 результатов. Однако мне нужно иметь возможность использовать что-то вроде функции jQuery onclick для загрузки более массивных результатов из json-массива, возможно, с использованием сплайсинга.

У Laravel есть опция разбиения на страницы, но она не работает на массивах, и я попробовал практически все, что я могу найти в Интернете, чтобы попытаться разбить массив на 60 дней на куски 5, поэтому при использовании функции onLoad html будет закрыт с новыми 5 результатами.

вот моя текущая функция onLoad:

    $.ajax({
    crossOrigin: true,
    url: '/dates',
    success: function(data) {
        $(".newdates").html('').append(data);
    }
}); 

и ive также попробовал следующее. Единственная проблема здесь заключается в том, что загружаются те же 3 результата сплайсинга, что и мне нужен какой-то способ разбивки на страницы или аналогично тому, как работают данные в формате jquery DataTables.

    $.ajax({
    crossOrigin: true,
    url: '/dates',
    success: function(data) {
        $.each(data.slice(0,3), function(i, item) {
            console.log(item);
        });
    }
});

Я надеялся, что результат будет!

В представлении html:

Day 1
Day 2
Day 3
Day 4
Day 5

(Загрузить больше) <- Onclick скрыть текущие 5 и показать следующие 5 доступных дат.

First 5 days are now hidden from the view
Day 6
Day 7
Day 8
Day 9
Day 10

И такая же функция Load More будет доступна agai

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

1 ответ

1

Если вы хотите разбивать страницы только на стороне клиента, вы можете сохранить эти данные в переменной, чтобы вам не пришлось снова извлекать данные. Кроме того, вы можете создать функцию для разбивки на страницы и всегда вызывать ее при необходимости. Вы должны искать плагин, который уже имеет дело с разбиением на страницы (к сожалению, я не использовал только разбивку на страницы клиента, поэтому я не знаю никаких плагинов).

var myData = {};
var pageNumber = 1;
var ITENS_PER_PAGE = 3;

$.ajax({
    crossOrigin: true,
    url: '/dates',
    success: function(data) {
        myData = data;
        console.log(paginate(myData, pageNumber, ITENS_PER_PAGE));
    }
});

function paginate(data, pageNumber, itensPerPage) {
  return data.slice((pageNumber - 1) * itensPerPage, itensPerPage);
}

function loadMore() {
  pageNumber++;
  console.log(paginate(myData, pageNumber, ITENS_PER_PAGE));
}
  • 0
    console.log выдает ошибку: TypeError: data.slice не является функцией, и тогда Array [] будет пустым. Мне пришлось поместить фрагмент кода удержания в саму функцию loadMore, которая вызывается с помощью метода onclick.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню