Устранаяем ошибку в Opera при ajax запросах

Прислано: neochief

сб, 26/04/2008 - 18:25

Другие статьи по теме:

Наверняка многие пользователи бравого браузера Opera замечали неприятную особенность при отправлении ajax запросов таких как, например, загрузка файла на сервер (модуль Upload), а именно назойливая ошибка при первой отправке:

Для тех, кто хочет решить проблему, но не знает как - вот оно, решение:

1. Находим файл misc/drupal.js
2. В нем находим строку if (window.opera) { и вставляем сразу после нее вот такое:

 if (response == 0) {
   return;
 }

3. Сохраняем файл
4. [опционально] Если у вас установлен комплект jstools, следует пропатчить таким же образом файл modules/jstools/jstools.js

После этого, ошибка уходит насовсем, и все работает отлично.

(В атаче патч для патчефилов)

P.S. Этот фикс уже стар, как мир, и непонятно почему они его так и не закоммитят в следующую версию.

Прикрепленный файлРазмер
opera_upload_hack.patch_.txt790 байтов

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано axel в сб, 26/04/2008 - 18:55.

Применил на drupal.ru к Drupal 5.7. Проверьте плиз кто под Оперой.


Опубликовано PanDa777 в сб, 26/04/2008 - 18:57.

А если примерно то же самое на firefox?


Опубликовано neochief в сб, 26/04/2008 - 19:28.

2 axel:
заработало

2 PanDa777:
Под фаером все работает без ошибок.


Опубликовано player в сб, 26/04/2008 - 20:41.

Спасибо большое!


Опубликовано axel в сб, 26/04/2008 - 20:56.

Ура! Спасибо за патч.


Опубликовано pihel в вс, 27/04/2008 - 07:01.

У меня и раньше все под оперой работало 0_о

а блин извеняюсь, я всегда через "добавить" все прикреплял


Опубликовано Ильич Рамирес Санчес в вс, 27/04/2008 - 10:33.

http://drupal.ru/node/9839 я уже выкладывал фиксы для 5ки....
на тот момент они работали.


Опубликовано PanDa777 в чт, 12/06/2008 - 13:32.

Только что проверил - у меня почему-то под firefox не работает. Просто нескончаемо двигается полоска.... А если нажать "добавить" - прикреплеяются сразу два файла - один не показывается в списке...


Опубликовано neochief в вс, 27/04/2008 - 19:13.

Огласите версию, систему и подробности. Мне кажется, что ваша проблема никак не связана с данным патчем


Опубликовано gorr в пн, 28/04/2008 - 07:05.

Спасибо, попробуем)


Опубликовано PanDa777 в вт, 29/04/2008 - 18:13.

Безусловно, с данным патчем никак не связана. Просто похожая проблема, которуя я наблюдаю уже года 2 (с выход пятой версии, наверное). Кстати, похоже, дело связано с аддоном. На чистой win firefox 2.0.0.14 проблем нет. Ни кого такой проблемы не было? Авось, и аддон скажут... Просто интересно, как вообще некоторый аддон может повлиять на работу скриптов Drupal...

Added:
Проблему, похоже, вызывает плагин Linkification. Странно, никогда его не бажило. Почему из-за него это может произойти?

Upd2
Я более-менее даже понимаю, откуда корни этой проблемы растут. В коде, которое возвращается при upload, встерчается пара текстовых ссылок. Конечно, эти ссылки Linkfication успешно преобразовывает, ибо запрашивается этот ответ с помощью iframe, который включён в DOM страницы. После чего при попытке пропарсить этот код через Drupal.parseJSON и возникают проблемы. Решения я пока, кроме как добавления drupal.ru в "чёрный" список Linkification, не знаю.


Опубликовано files32 в ср, 30/04/2008 - 04:41.

+1


Опубликовано mean0dspt@drupal.org в вс, 25/05/2008 - 07:53.

в шестерке, если я не совсем слепой, такого текста как
if (window.opera) {
в нужном файле нету...
приходится дописывать самому это условие.


Опубликовано Химический Али в вс, 25/05/2008 - 16:48.

Наверное, разработчики друпала считают, что проблемы оперы должна решать опера софтвеар, а не они.


Опубликовано Ильич Рамирес Санчес в вс, 25/05/2008 - 20:11.

не. они считают что типичный юзер - это физик-шизик сидящий в голом файрфоксе без плагинов..... или в експлорере.

сам сижу на опере.


Опубликовано VladSavitsky в ср, 04/06/2008 - 13:43.

А как в Друпал6 решить эту проблему с Оперой?
Раньше вроде бы опера нормально работала, а сейчас стали возникать такие же ошибки.


Опубликовано neochief в ср, 04/06/2008 - 14:38.

там должно быть все аналогично


Опубликовано neochief в чт, 12/06/2008 - 13:16.

В новой Opera 9.5 проблема осталась.


Опубликовано VladSavitsky в пн, 30/06/2008 - 09:47.

В Друпал 6 проблема решается заменой файла jquery.form.js более свежей версией:
http://jqueryjs.googlecode.com/svn/trunk/plugins/form/jquery.form.js
После этой замены нужно очистить кеш на странице "Производительность" (admin/settings/performance)


Опубликовано VladSavitsky в пн, 30/06/2008 - 10:37.

Drupal CookBook - Готовить может каждый!Решение было сохранено на сайте DrupalCookBook.ru:
Исправление ошибки в Опере при AJAX-загрузке файлов.
Авторы, предложившие решения, также указаны в сохранённой статье.


Опубликовано iHappy в вс, 06/09/2009 - 07:13.

"VladSavitsky" написал(а):

В Друпал 6 проблема решается заменой файла jquery.form.js более свежей версией:
http://jqueryjs.googlecode.com/svn/trunk/plugins/form/jquery.form.js
После этой замены нужно очистить кеш на странице "Производительность" (admin/settings/performance)

Файл не обнаружен.
Исправление ошибки не имеет возможности.


Опубликовано vfix в чт, 15/10/2009 - 10:14.

Только приступил к освоению Друпала и столкнулся с этой проблемой, при загрузке файла, тлько сообщение ошибки другое:

Произошла HTTP ошибка 0. \n/?q=filefield/ahah/images/field_image_image/0

Друпал последний - 6.14, Opera 10.00,
в ФФ - ощибки не возникает.

Решил проблему советом:
"VladSavitsky в пн, 30/06/2008 - 13:47.

В Друпал 6 проблема решается заменой файла jquery.form.js более свежей версией:
http://jqueryjs.googlecode.com/svn/trunk/plugins/form/jquery.form.js
После этой замены нужно очистить кеш на странице "Производительность" (admin/settings/performance)"

по указанной ссылке нужный файл не загружается, но в там в коментариях есть живая ссылка


Опубликовано lopata24 в пт, 16/10/2009 - 12:34.

Для 6ого Друпала
Заменить в папке misc файл jquery.form.js

Брать файл отсюда
http://storage.xost.ru/files/jquery.form.js

;-)


Опубликовано neochief в пт, 16/10/2009 - 13:03.

вот тут самая свежая версия, с современным фиксом проблемы, 2.18 не всегда работает. 2.28:
http://camp09.drupal.ua/misc/jquery.form.js


Опубликовано andypost@drupal.org в ср, 28/10/2009 - 12:47.

@neochief напомни issue по jquery.forms.js в 7ке....


Опубликовано neochief в ср, 28/10/2009 - 15:15.

А ее не было, есть только issue для модуля одноименного. Можешь создать новую (был бы рад ссылке на нее).


Опубликовано andypost@drupal.org в ср, 28/10/2009 - 22:18.

@neochief баг уже давно пылится http://drupal.org/node/240777
Перевел его в 7ю ветку ибо там такая же беда с image, думаю стоит пропиарить сие, чтобы больше людей потестировало, ведь от этой либы может зависеть масса в контрибе и вероятно, что в 6й ветке это не исправят уже.


Опубликовано albik в вт, 03/11/2009 - 20:30.

neochief написал(а):

вот тут самая свежая версия, с современным фиксом проблемы, 2.18 не всегда работает. 2.28:
http://camp09.drupal.ua/misc/jquery.form.js

Спасибо, помогло от ошибки HTTP 0, а то уже не знал, в какую сторону копать.


Опубликовано Goodboy в вт, 17/11/2009 - 15:36.

Ничего не помогает от ошибки HTTP 0.
Ставил jquery.form.js версий 2.16, 2.18, 2.28, 2.35


Опубликовано andypost@drupal.org в ср, 18/11/2009 - 05:07.

@Goodboy какую версию DRUPAL используешь?


Опубликовано Goodboy в ср, 18/11/2009 - 08:34.

andypost@drupal.org, использую Drupal 6.14

Кеширование в Друпале везде отключено.
Upload progress не включен.
FileField 6.x-3.2
Upload не включен.

Настройки PHP:

post_max_size 16M
realpath_cache_size 16M
upload_max_filesize 16M

max_execution_time 30
max_input_time 60
memory_limit 128M

Пробовал руками подкладывать jquery.form.js
Затем установил модуль jQuery Form Update 6.x-1.0, использую jquery.form.js 2.16

Картинки (Widget type: Image )успешно закачиваются до определенного размера, установленного экспериментально (~800К). При загрузке выполняется автоматический ресайз. Ограничение размера на загрузку картинки: 750K. Естественно, пробовали на разных браузерах - везде были ошибки. В настоящее время у меня нигде нет ошибок. Несколько сотен пользователей успешно закачали картинки, несколько десятков - не успешно. Последняя проблемная загрузка решилась закачкой на MSIE...


Опубликовано andypost@drupal.org в ср, 18/11/2009 - 09:22.

"Goodboy" написал(а):

Картинки (Widget type: Image )успешно закачиваются до определенного размера, установленного экспериментально (~800К).

Это очень похоже на нехватку памяти при изменении размера, решается увеличением памяти для php процесса, также будет решаться работой через  ImageAPI после принятия патча (imageapi позволяет заменить вызовы GD на imagemagick если таковой установлен на хостинге)

PS: большая просьба ко всем протестировать http://drupal.org/node/618024 - добавляет поддержку imageapi для генерации превьюх и позволит полноценно использовать всю мощь этого модуля


Опубликовано Goodboy в ср, 18/11/2009 - 14:48.

Андрей, спасибо за участие! Теперь загружаются файлы размером 1.1M, при бОльших размерах возникает окно с ошибкой.
В то же время, установлены лимиты в 500K, однако сообщение о превышении лимита возникает только при успешной попытки закачки.

Размер памяти для php процесса 128M
Патч накатил (пропатченный файл во вложении).

Модуль ImageAPI GD2 включен

admin/settings/image-toolkit установлено Качество JPEG: 90%
ImageAPI ImageMagick не установлен
Используется ImageCache

Что предпринять? Уменьшить качество? Установить ImageMagick? Подменить jquery.form.js ?

UPD: Все перепробовал (качество 75%, установил ImageMagick 6.5.5-10 2009-11-18 Q16 , http://malsup.com/jquery/form/jquery.form.js?2.36 ). Отличие ImageMagick от GD2 увидел только в том, что "колесико" при закачке крутится рывками.


Опубликовано antton в чт, 19/11/2009 - 23:55.

У меня проблема решилась, но частично. Раньше загрузка в Opera вообще не работала, теперь же загружается несколько файлов ~15 шт (не зависит от их размера, грузил и совсем маленькие текстовые файлы 24 байта). и после выскакивает ошибка: "Произошла HTTP ошибка 0. \n/upload/js"
При этом при загрузке через Internet Eplorer и Firefox проблем не возникает, все файлы спокойно загружаются.

Версии компонетов Drupal:
- Drupal 6.14
- jquery.form.js версий 2.28, 2.35
- jquery.js (тоже обновлял)
- браузер Opera 9.63
- модуль загрузки из стандартной поставки Upload.

Настройки php.ini:
max_execution_time 30
max_input_time 60
realpath_cache_size 16K
upload_max_filesize 16M
post_max_size 100M
memory_limit 32M


Опубликовано PVasili в ср, 18/11/2009 - 17:11.

Опера, с момента массового использования всегда славилась своим особым отношением к JS.
Из-за этого у меня дальше наладонника ни где не прижилась, несмотря на многие удобства - предсказуемость поведения важнее.


Опубликовано andypost@drupal.org в чт, 19/11/2009 - 07:54.

Включать после накатывания патча нужно imageapi imagemagick, проблема похоже именно в GD


Опубликовано Goodboy в чт, 19/11/2009 - 08:19.

Я включал imagemagick - проблема не решилась, а "колесико" загрузки начало крутиться с рывками.

Было бы здорово, если бы можно было брать размер файла из заголовка, не закачивая весь файл. И, если размер превышает установленный лимит - сразу выдавать сообщение об ошибке.


Опубликовано andypost@drupal.org в чт, 19/11/2009 - 10:09.

Все проверки происходят исключительно после полной загрузки файла, возможно сие можно перекрыть, но вероятно только flash загрузчиком с ссответствующим кодом на стороне сервера.

Итак, что у кого в логах?


Опубликовано antton в чт, 19/11/2009 - 23:50.

"PVasili" написал(а):

Опера, с момента массового использования всегда славилась своим особым отношением к JS.

Я всё понимаю, но дело в том что многие пользуются Оперой, должен быть способ лечения и этого глюка.
Печально, но в моём случае дело не в нехватке памяти и не в обработке изображений, так что ImageAPI мне увы не поможет (


Опубликовано andypost@drupal.org в сб, 21/11/2009 - 00:20.

Судя по issues которые я приводил в предыдущих коментах - грабли в самой опере и делать для неё костыли врят ли кто будет. Имхо проще закинуть баг в оперу - пусть правят у себя.

Хотя судя по 21му коменту в http://drupal.org/node/92640 опера считает что это баг в jq.form


Опубликовано Goodboy в вс, 22/11/2009 - 15:43.

Логи выдадим чуть позже, а вот Хром при загрузке 2M файла выдал ошибку:

"413 Request Entity Too Large
nginx/0.8.21"

Может, это что-то объяснит...


Опубликовано Psixo в сб, 19/12/2009 - 05:26.

Ну вот,снова, обновил Drupal до 6.15 и полезло, как правильно пофиксить? Просто боюсь что фиксеные файлы которые здесь выкладывали, немного уже устарели.


Опубликовано Sky Cat в ср, 13/01/2010 - 00:44.

Тоже была подобная проблема. У меня при слишком большом количестве тэгов для ноды (более 50), начала вылезать эта ошибка.
Решение:
модуль batax. В нем ставим нужное количество прикрепляемых терминов к одной ноде.
кусок конфига для nginx (если проблема не исчезнет):

location /taxonomy/autocomplete/ {
proxy_pass http://127.0.0.1:8082/taxonomy/autocomplete/;
proxy_redirect off;
proxy_set_header    Host    $host;
proxy_set_header    X-Real-IP       $remote_addr;
proxy_set_header    X-Forwarded-For $remote_addr;
    proxy_buffers 8 64k;
    proxy_intercept_errors on;
    proxy_connect_timeout 900s;
    proxy_read_timeout 900s;
    proxy_send_timeout 900s;
    proxy_buffering on;
}


Опубликовано andypost@drupal.org в вт, 19/01/2010 - 21:09.

http://drupal.org/node/609622 в 7ку пошла 2.36


Опубликовано sadmin в сб, 06/02/2010 - 00:09.

Спасибо за jquery.form, помогло


Опубликовано Arturus в сб, 13/02/2010 - 05:55.

Вот здесь выкладывают патчи для решения подобной проблемы
http://drupal.org/node/646694
в виде файла
drupal.improve_http_0_status_reporting_646694_18.patch
а как его применять?


Опубликовано vgoodvin в сб, 13/02/2010 - 06:26.

"Arturus" написал(а):

В поиске все есть.


Опубликовано Arturus в сб, 13/02/2010 - 12:49.

Я не нашел


Опубликовано RxB в сб, 13/02/2010 - 13:00.

Скажите по каким словам искали, я хоть посмеюсь. Но и скажу потом, что надо было в поиск вводить


Опубликовано vgoodvin в сб, 13/02/2010 - 13:12.

"Arturus" написал(а):

Я не нашел

Я здесь в поиске ввел слово "патч" и одна из ссылок вела на правильный ответ. Руководство по созданию и применению патчей есть здесь http://drupalcookbook.ru/


Новое на сайте

Ссылки партнёров