Я обнаружил, что свойство onLoading также ненадежно ... Допустим, ваш запрос уже кэширован и почти сразу возвращается к вашему внешнему коду. Теперь давайте также скажем, что по какой-то причине выполнение метода onLoading занимает больше времени, чем метод onComplete. Наконец, давайте сходим с ума и предположим, что ajax является асинхронным и что он не будет ждать завершения метода onLoading, прежде чем запустит метод onComplete. И тогда у вас есть причина вашей проблемы! Подводить итоги:
- Запрос отправлен
- метод onLoading запущен, но по какой-то причине еще не запущен
- запрос возвращается практически мгновенно
- метод onComplete запускается и запускается сразу
=> вы получите метод onComplete, который будет завершен до запуска onLoading: ваш элемент будет скрыт и затем отобразится!
В качестве обходного пути, почему бы не создать свой "Element.show ('load_animation _ <% = word_obj.word%>')}" прямо перед созданием объекта запроса Ajax? Таким образом, вы не полагаетесь на метод onLoading и «асинхронность», которая сопровождает его?
Кроме того, я всегда добавляю «requestHeaders: [« If-Modified-Since »,« Fri, 31 Dec 1999 23:59:59 GMT »]» в мои запросы ajax, чтобы предотвратить кэширование запроса, особенно в IE, где кэшированные запросы AJAX могут запутаться!