Отдельно оба ajax работают как положено, но при совместном использовании возникает проблема:
Проблема - 1: После загрузки новых статей они дублируются
Проблема - 2: Кнопка добавления в избранное перестает работать с вновь загруженными статьями.
AjaxPagination. js:
function ajaxPagination()
{
$('#pagination a.page-link').each((index, el) =>{
$(el).click((e) => {
e.preventDefault()
let page_url = $(el).attr('href')
console.log(page_url)
$.ajax({
url: page_url,
type: 'GET',
success: (data) => {
$('.do_it').append( $(data).filter('.do_it').html())
$('.pagination').empty()
$('.pagination').append( $(data).find('.pagination').html())
}
})
})
})
}
$(document).ready(function() {
ajaxPagination()
})
$(document).ajaxStop(function() {
ajaxPagination()
})
AjaxAddToFlected. js:
const add_to_favorites_url = '/favorites/add/';
const remove_from_favorites_url = '/favorites/remove/';
const favorites_api_url = '/favorites/api/';
const added_to_favorites_class = 'added';
function add_to_favorites(){
$('.do_it').on('click', '.add-to-favorites', (e) => {
e.preventDefault()
const type = $(el).data('type');
const id = $(el).data('id');
if( $(e.target).hasClass(added_to_favorites_class) ) {
$.ajax({
url: remove_from_favorites_url,
type: 'POST',
dataType: 'json',
data: {
type: type,
id: id,
},
success: (data) => {
$(el).removeClass(added_to_favorites_class)
}
})
} else {
$.ajax({
url: add_to_favorites_url,
type: 'POST',
dataType: 'json',
data:{
type: type,
id: id,
},
success: (data) => {
$(el).addClass(added_to_favorites_class)
// get_session_favorites_statistics()
}
})
};
})
};
function get_session_favorites() {
// get_session_favorites_statistics()
$.getJSON(favorites_api_url, (json) => {
if (json !== null) {
for (let i = 0; i < json.length; i++) {
$('.add-to-favorites').each((index, el) => {
const type = $(el).data('type')
const id = $(el).data('id')
if ( json[i].type == type && json[i].id == id ){
$(el).addClass(added_to_favorites_class)
}
})
}
}
})
}
$(document).ready(function() {
add_to_favorites()
get_session_favorites()
})
Django (нумерация страниц) views.py:
def index(request):
posts = Post.objects.all()
paginator = Paginator(posts, 3)
page_number = request.GET.get('page', 1)
page = paginator.get_page(page_number)
is_paginated = page.has_other_pages()
if page.has_next():
next_url = '?page={}'.format(page.next_page_number())
else:
next_url = ''
context = {
'page_object': page,
'is_paginated': is_paginated,
'next_url': next_url
}
return render(request, 'polls/index.html', context=context)
Нет ошибок в консоли отладки браузера. Что здесь не так? Спасибо.