Соотв-но через fetch получаете в ответе json-объект от php, декодируете его, находите нужный url и делаете редирект средствами браузера например через window.location
1. пользователь который ожидает результата в цикле опрашивает статус с вашего сервера
2. постбэк приходит на ваш сервер
3. ваш сервер на очередной запрос пользователя в ответе отдаёт что статус изменился
Делать так же как делают соц сети и мессенджеры для показа превью сайта по ссылке
1. пишется свой бот который переходит по урлу и скачивает содержимое страницы
2. парсите полученный html и достаёте от туда мета-теги, title и отображаете превью
Добавьте аттрибут data-sort и поместите в него дату в формате Y-m-d и тогда сортировка будет не по содержимому ячейки, а по содержимому аттрибута data-sort
Чтобы удалить куку, недостаточно имени куки и передачи Expiration
Нужно послать в браузер куку точно с такими же параметрами, с которыми она была установлена
Тут влияют все флаги: path, domain, secure, httponly, samesite
Например PHPSESSID для site.ru и PHPSESSID для .site.ru это две разных куки.
То есть вам надо точно определить какую куку удалить с учётом флагов с которыми она была установлена. Посмотреть это можно в dev tools, во вкладке Application -> Storage -> cookies
https://infiniteajaxscroll.com/
Позволяет поверх уже готовой пагинации прикрутить ajax-пагинацию, при этом стандартную пагинацию менять не нужно, и надо лишь разметить ссылки (след страница), элементы которые добавляются и контейнер куда добавлять элементы.
Так же умеет в historyApi чтобы не терялась страница на которой находитесь.
1. Отсортировать исходный массив по возрастанию
2. Пройтись в цикле по массиву распределяя поочерёдно значения между 2-мя массивами
3. Если сумма чисел в одном из массивов больше, найти разницу сумм масивов
4. Отсортировать массив с большей суммой чисел по возрастанию
5. Пройтись в цикле по большему массиву перемещая значение в массив с меньше суммой до тех пор пока суммы не станут равны или разница сумм не станет "больше-равно" разницы из п3