serverData не возвращается правильно в Internet Explorer - swfupload и рельсы
Мы используем SWFUpload для одной из наших форм, чтобы люди могли загружать медиа. Как только SWFUpload отправляет событие uploadSuccess, мы получаем данные и URL-адрес файла из serverData, которые передаются обратно при отправке события.
В настоящее время в IE событие отправляется, но не похоже, что информация сохраняется - наши скрытые поля, в которые мы помещаем данные сервера, пусты. Возможно, событие зависает и отправляется слишком рано, а затем данные сервера все еще пусты.
Конкретная функция, которая должна захватывать и сохранять данные:
.bind('uploadSuccess', function(event, file, serverData){
var swfu = $.swfupload.getInstance('#swfupload-control');
try {
file.id = "singlefile";
if (serverData === " " || serverData === null) {
swfu.customSettings.upload_successful = false;
} else {
swfu.customSettings.upload_successful = true;
document.getElementById("hidFileID").value = serverData;
}
} catch (ex) {
swfu.debug(ex);
}
})
Если serverData пуст, возможно ли проверить эти данные еще раз с помощью функции обработчика событий?
1 ответ
FWIW, это невозможно, потому что это функция обработчика событий, что я и предполагал.
Здесь есть интересная возможность использования GET вместо POST для лучшей кросс-браузерной совместимости: SWFUpload работает в IE, но не в Firefox, однако, я загружаю в S3, так что решение невозможно.
Я пытаюсь запустить Uploadify и посмотреть, что там происходит.
ОБНОВЛЕНИЕ:
Я переключился на Uploadify, но проблема не была связана с драгоценными камнями. Данные были возвращены для IE. Тем не менее, эта строка:
document.getElementById("hidFileID").value = serverData;
помещал serverData, который является строкой разметки XML, в скрытый <input>
тег. IE не разрешал этого, потому что входной тег не является блочным элементом, поэтому вы не можете вставить разметку в неблокированные элементы.
Firefox и Chrome "простят" это, но IE на самом деле здесь прав.
Я закончил анализом serverData в javascript и вставил нужную мне строку (url) из данных в скрытое поле ввода, и все заработало.