Почему JavaScript не выполняется на jQuery версии 3.7.0?

Почему код JavaScript перестал работать на версии jQuery 3.7.0, хотя на версии 2.1.1 все работало исправно? Помимо изменения `success` на `done` и `error` на `fail`, что еще можно попробовать, чтобы функция `saveform` корректно переходила к `save_chemacategs` при выполнении AJAX-запроса с помощью jQuery 3.7.0?
  • 24 марта 2024 г. 18:19
Ответы на вопрос 2
При обновлении jQuery с версии 2.1.1 до 3.7.0, могут произойти изменения, которые могут повлиять на исполнение кода JavaScript. Одним из основных изменений между этими версиями является порядок выполнения callback функций в методе AJAX.

В jQuery 3.0 были внесены изменения в способ обработки Promise-объектов, в частности методов `success` и `error`. Вместо них теперь используются методы `done` и `fail`.

Если после обновления код перестал работать, необходимо убедиться, что все использования `success` и `error` были заменены на `done` и `fail` соответственно.

Однако, помимо этого изменения, есть и другие возможные причины, почему код может перестать работать на новой версии. Например, изменения в структуре данных или методах, изменения в синтаксисе JavaScript, изменения в API jQuery и т.д.

Для того чтобы функция `saveform` корректно переходила к `save_chemacategs` при выполнении AJAX-запроса с помощью jQuery 3.7.0, рекомендуется:

1. Убедиться, что все использования `success` и `error` были заменены на `done` и `fail`.

2. Проверить, что AJAX-запрос выполняется корректно и возвращаются ожидаемые данные.

3. Проанализировать консоль разработчика браузера на предмет ошибок и предупреждений.

4. Изучить документацию jQuery для версии 3.7.0 и убедиться, что нет других изменений, которые могли бы повлиять на ваш код.

5. Если ничего не помогает, попробуйте создать упрощенный пример кода для воспроизведения проблемы и задать вопрос на форумах или ресурсах сообщества разработчиков для получения дополнительной помощи.

В целом, для успешного обновления кода с версии jQuery 2.1.1 до 3.7.0 рекомендуется тщательно изучить все изменения и адаптировать код соответственно новым требованиям и синтаксису.
В вашем коде вы используете неправильные имена обработчиков для успеха и ошибки ajax -запроса. Вместо done и fail используйте success и error , соответственно. 

UPD:
Вот стандартный пример ajax -запроса:
$.ajax({
    url: 'https://domain.com/router/',
    method: 'post', // NOT A TYPE
    data: JSON.stringify({ ... }),
    dataType: 'application/json; charset=utf-8',
    success: (response) => { ... },
    error: (response) => { ... }
})


.done и .fail срабатываю, когда у вас получилось либо не получилось сделать запрос. success и error срабатывают в зависимости от ответа сервера .
Похожие вопросы