Привет, ребята! У меня возникла проблема с jQuery и AJAX. Я пытаюсь сделать запрос, который автоматически повторяется несколько раз с задержкой, если он не удался. Вот примерно такой код я использую:
Но при выполнении получаю ошибку TypeError: Illegal invocation. Пробовал использовать промисы - та же история. Может кто-нибудь подсказать, в чем проблема и как ее решить? Заранее спасибо за помощь!
Привет, дружище! сталкивался с похожей проблемой. твой код почти верный, но есть небольшая ошибка. вместо this используй $.ajax.settings, так как контекст внутри функции ошибки меняется. вот как можно исправить:
Чувак, я бы на твоем месте вообще отказался от jQuery для таких задач. Это древность. Лучше юзай fetch с async/await, там намного проще организовать повторные запросы. Вот примерно так:
async function отправитьЗапрос(попытки = 3, задержка = 1000) {
for (let i = 0; i < попытки; i++) {
try {
const ответ = await fetch('адрес_сервера');
return await ответ.json();
} catch (ошибка) {
if (i === попытки - 1) throw ошибка;
await new Promise(resolve => setTimeout(resolve, задержка));
}
}
}
Код чище и понятнее, плюс работает во всех современных браузерах. Попробуй, не пожалеешь!