net::ERR_CONNECTION_REFUSED ajax jquery Spring mvc
Есть реализация списка, порядок которого можно настраивать перетаскиванием, и после каждого перетаскивания порядок отправляется на сервер для сохранения:
//it is pagination - number of page
let pageNum = $("#navigation").find(".active").text();
//size of the page
let sizeNum = $("#size").find(".active").text();
//this function responsible for sorting
$(".list-group").sortable({
//after drop element this function trigger
stop: (event, ui) => {
let newGroup = [...event.target.querySelectorAll(".card")].map((el, index) => {
// creating new list - replace only its position
return {
position: (pageNum - 1 * sizeNum) + index + 1,
id: $(el).children().children("input").val(),
title: $(el).children().children(".card-title").text(),
description: $(el).children().children(".card-text").text()
};
});
console.log(newGroup);
let url = 'http://localhost/tasks';
$.ajax({
url: url + '/positions',
method: 'PATCH',
data: JSON.stringify(newGroup),
contentType: "application/json; charset=utf-8",
headers: {
'Authorization': 'Bearer ' + localStorage.getItem('access_token')
},
statusCode: {
200: function () {
//this function makes request to server and get new updated with positions list
getTasks(url + '?size=' + sizeNum + '&page=' + pageNum)
},
401: function () {
let refreshed = refreshToken();
//try again if access_token expired
if (refreshed) {
$.ajax({
url: url + '/positions',
method: 'PATCH',
data: JSON.stringify(newGroup),
contentType: "application/json; charset=utf-8",
headers: {
'Authorization': 'Bearer ' + localStorage.getItem('access_token')
},
success: function () {
getTasks(url + '?size=' + sizeNum + '&page=' + pageNum)
}
});
}
},
403: function () {
window.location = '../403_forbidden.html';
}
}
});
}
});
Примерно так выглядит построение содержимого:
let list = '';
data.tasks.forEach(function (task){
list += `<div class="card mb-3" data-position="${task.position}">
<div class="card-body">
<h5 class="card-title">${task.title}</h5>
<p class="card-text">${task.description}</p>
<input type="hidden" value="${task.task_id}">
<p><small class="text-danger"></small></p>
<button class="btn btn-outline-warning" onclick="editTask(this)">Edit</button>
<button class="btn btn-outline-danger" onclick="deleteTask(this)">Delete</button>
</div>
</div>`;
});
$("#tasks").html(list);
В общем выглядит это так: с сервера приходит список, засовывается на страницу. Если какой-то элемент перетащить, порядок фиксируется и отправляется на сервер на сохранение. Если все прошло удачно, делается запрос на список, отсортированный по позиции, и вновь помещается на страницу.
Дело вот в чем: все остальные ajax-функции работают отлично, падает только эта
Метод на стороне сервера:
@RestController
@RequiredArgsConstructor
@RequestMapping("/tasks")
public class TasksController {
@PatchMapping("/positions")
@PreAuthorize("hasRole('ADMIN')")
public void saveOrdering(@RequestBody List<TaskInDto> dtoTasks) {
List<Task> tasks = dtoTasks.stream()
.map(mapper::fromDto)
.collect(Collectors.toList());
//service saves data
taskService.saveAll(tasks);
}
}
Если провернуть вышеперечисленные операции через postman - все так же отлично работает. В чем может быть дело?
