Исправляем ошибку "AJAX запрос завершен неправильно" в Drupal
В Друпал 7 есть замечательный AJAX Framework. Но разработчики сделали, что все ошибки в его работе (а они могут случиться на ровном месте) вываливаются на пользователя в виде javascript alert окна. На английском это сообщение выглядит так: An AJAX HTTP request terminated abnormally. Debugging information follows. Path: /system/ajax StatusText: ResponseText: ReadyState: 4
Такая ошибка часто появляется, когда ajax запрос еще продолжается (сервер делает какую-нибудь долгую работу), крутится индикатор работы, а пользователь нажал на ссылку на странице, чтобы с нее уйти. Я придерживаюсь внутреннего убеждения, что выводить сообщения для пользователя с помощью alert'ов - это моветон. Они некрасивые, они выглядят по-разному в разных браузерах и операционных системах и они пугают пользователя. В общем, один негатив.
Именно поэтому мы все алерты будем выводить в консоль браузера (если она есть). Для этого в любой javascript файл (например в нашей drupal теме или в собственном модуле) добавляем следующую строчку:
window.alert = function(arg) { if (window.console && console.log) { console.log(arg); } };
Этим мы переопределяем javascript функцию alert и говорим ей, что вместо создания окна с кнопкой нужно все писать в консоль.