Насчет ajax-запросов, посоветую fetch API. Это встроенная в javascript функциональность, которая позволяет делать запросы на бэкенд.
Документация
Пример:
fetch('http://твой-url/', {
// Параметры ниже не обязательны, по умолчанию метод GET
method: 'POST', // любой твой метод
mode: "cors", // no-cors, cors, *same-origin
cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
credentials: "same-origin", // include, *same-origin, omit
headers: {
// Здесь твои заголовки
"Content-Type": "application/json",
},
// Тут тело запроса с информацией, которую отправляешь серверу, переменная data – javascript-объект
body: JSON.stringify(data)
})
.then(response => {
// Тут пиши что делаешь после выполнения запроса
})
.catch(error => {
// Тут пиши обработку возникшей ошибки, пример ниже:
console.log(error);
})