Помогите со стандартным модулем upload

Главные вкладки

Аватар пользователя Petry Petry 9 апреля 2009 в 23:08

У меня появилась проблема в стандартном модуле upload:
не загружаются файлы:
после нажатия на кнопку добавить, вместо формы загрузки и только что загружаемого файла, появляется нечто вроде:
"{ "status": true, "data": "\x3cdiv class=\"messages status\"\x3e\n \x3cul\x3e\n \x3cli\x3e\x3ca href=\"/admin/settings/site-maintenance\"\x3eРабота в режиме off-line.\x3c/a\x3e\x3c/li\x3e\n \x3cli\x3e ..." и т. д.
бьюсь уже 2-ой день, не могу найти решение, может кто сталкивался?

Комментарии

Аватар пользователя talgar@drupal.org talgar@drupal.org 26 мая 2009 в 13:43

решение найдено?
сегодня столкнулся с такой же бедой. после нажатия выдает
{ "status": true, "data": "\x3cdiv class=\"messages status\"\x3e\nFor security reasons, your upload has been renamed to \x3cem и т.д.
при этом файлы загружаются

Аватар пользователя talgar@drupal.org talgar@drupal.org 27 мая 2009 в 7:43

начал разбираться с проблемой и зашел в тупик.

есть два сайта одинаковых (основной и копия его для тестов). В тестовом окружении загрузка проходит успешно, на боевом при отправке файла через ahah вываливается { "status": true, "data": "\x3cdiv class=\"messages status\"

через firebug удалось установить следующее:
1. Ответы на ajax запросы от сервера идут одинаковые на обоих серверах в виде { "status": true, "data": "\x3cdiv class=\"messages status\" и т.д.
2. далее ответ начинает обрабатываться в файле ahah.js:

success: function(response, status) {
81 // Sanity check for browser support (object expected).
82 // When using iFrame uploads, responses must be returned as a string.
83 if (typeof(response) == 'string') {
84 response = Drupal.parseJson(response);
85 }
86 return ahah.success(response, status);
87 },

3. Ответ (response) передается в функцию Drupal.parseJson (файл drupal.jz):

Drupal.parseJson = function (data) {
190 if ((data.substring(0, 1) != '{') && (data.substring(0, 1) != '[')) {
191 return { status: 0, data: data.length ? data : Drupal.t('Unspecified error') };
192 }
193 return eval('(' + data + ');');
194};

после этого происходит то, что понять не могу
в работающей системе data.substring(0, 1) возвращает "{" и и выполняется строчка
193 return eval('(' + data + ');');
и все идет "как по маслу"

в сбойной системе data.substring(0, 1) возвращает "" и переходит на строчку
191 return { status: 0, data: data.length ? data : Drupal.t('Unspecified error') };
после чего и происходит вываливание на страницу нераспарсенного ответа: { "status": true, "data": "\x3cdiv class=\"messages status\"

в тоже время data.substring(0, 2) в сбойной системе возвращает "{"

что может быть? кто нибудь сталкивался с такой проблемой? как можно ее решить?

Аватар пользователя talgar@drupal.org talgar@drupal.org 27 мая 2009 в 8:47

временно решил проблему изменив строчку строчку в файле drupal.js
было:
190 if ((data.substring(0, 1) != '{') && (data.substring(0, 1) != '[')) {
стало:
190  if ((data.substring(1, 2) != '{') && (data.substring(0, 1) != '{') && (data.substring(0, 1) != '[')) {