Я постепенно расширяю возможности ajax-tiv (TM) своего сайта и недавно добавил несколько довольно простых способов обработки ошибок.
Мои звонки выполняются с помощью метода jquery .ajax (), и я отображаю ошибки пользователю с помощью функции show_error_box (message)
Я обрабатываю весь свой ajax, возвращая сценарии, чтобы проверка на стороне сервера была легкой - я просто отправляю обратно вызов show_error_box. Для других ошибок я просто вставил следующий код в мой вызов .ajax
error: function(xhr, status, error) {
show_error_box("There has been an error communicating with the server<br/>The field has not been updated<br/>Please check your internet connection");
}
Я обнаружил, что это хорошо работает с большинством проблем (без подключения, тайм-аута и т. Д.), Но плохо работает с ситуацией, когда пользователь нажимает на ссылку, когда еще продолжается вызов ajax. Окно ошибки начинает отображаться, а затем внезапно пользователь уходит на новую страницу.
Как лучше справиться с этой ситуацией? В идеале мне хотелось бы, чтобы отображалось не навязчивое сообщение об ошибке (например, «пожалуйста, дождитесь завершения обновления») и игнорирование щелчка по ссылке. Какие-нибудь предложения относительно того, как лучше всего достигнуть этого?
EDIT:
Я решил эту проблему, временно отключив все ссылки, а затем снова включив их;
$.ajaxSetup({
beforeSend: function() {disable_links()},
complete: function() {enable_links()},
timeout: 15000
});
function disable_links() {
$('a').each(function() {
if ($(this).attr('href')) {
$(this).data('href', $(this).attr('href')).removeAttr('href');
}
})
}
function enable_links() {
$('a').each(function() {
$(this).attr('href', $(this).data('href'));
})
}