Я новичок в использовании ajax, и я всегда думал, что он полностью асинхронный. Но я обнаружил, что вызов может быть прерван перезагрузкой страницы или изменением страницы (например, нажатием на гиперссылку). У меня сложилось впечатление, что когда запускается вызов ajax, он выполняется независимо от того, что браузер делает потом. Это неправильно?
Теперь перейдем к конкретной проблеме: подумайте об онлайн-тесте, где пользователи отвечают на вопросы (вводя текстовые поля). Когда текстовое поле теряет фокус, вызывается ajax-вызов, который сохраняет значение текстового поля в БД. Это хорошо работает при переключении между текстовыми полями. Тем не менее, у меня также есть кнопка отправки, которая запускает действие публикации на другой странице (это кнопка отправки). Когда я ввожу что-то в текстовое поле и затем нажимаю на кнопку, звонок не выполняется. Более того, когда я набираю текстовое поле, нажимаю в другом месте (также вызывая вызов) и быстро нажимаю на кнопку отправки, вызов также не выполняется. Это ожидаемое поведение?
Причина, по которой я в первую очередь использую ajax, заключается в сохранении значений, поэтому, когда происходит что-то непредвиденное, например, сбой браузера, уже введенный текст уже сохраняется.
Мой образ мышления неправильный? Как бы вы решили эту проблему?
Спасибо за ваше время!