Задача:
Uploadify используется для загрузки файлов на сервер.Это сделано потому, что должен быть индикатор выполнения при загрузке и проверка перед загрузкой для типа файла и размера.
Я использую uploadifySettings
-Metod, чтобы добавить некоторые дополнительные параметры к запросу.Это другие формы ввода.Все это прекрасно работает с FireFox.
Вызов функции:
this.$uploadifyInputButton.uploadifySettings(
'scriptData', {'description': description, 'parentFolder': parentFolder}
);
//parent Folder is an ID. This has nothing to do with the folder option in uploadify
Проблема:
Когда я тестирую сIE это не работает.
Сведения об ошибке веб-страницы:
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;...)
Timestamp: Wed, 9 Nov 2011 11:49:52 UTC
Message: Object doesn't support this property or method
Line: 264
Char: 17
Code: 0
Message: Object doesn't support this property or method
Line: 264
Char: 17
Code: 0
Эти сообщения указывают на следующую строку в загруженной распакованной библиотеке:
returnValue = document.getElementById(jQuery(this).attr('id') + 'Uploader').updateSettings(settingName, settingValue);
Тестирование
Когда я использую Инструменты разработчика и проверяю селектор document.getElementById(jQuery(this).attr('id') + 'Uploader')
, это относится к объекту-элементу (Тип DispHTMLObjectElement).Так что должно быть правильно?
Связано
Когда я использую метод uploadifyUpload
, я получаю похожую ошибку.
Полная функция библиотеки:
uploadifySettings:function(settingName, settingValue, resetObject) {
var returnValue = false;
jQuery(this).each(function() {
if (settingName == 'scriptData' && settingValue != null) {
if (resetObject) {
var scriptData = settingValue;
} else {
var scriptData = jQuery.extend(jQuery(this).data('settings').scriptData, settingValue);
}
var scriptDataString = '';
for (var name in scriptData) {
scriptDataString += '&' + name + '=' + scriptData[name];
}
settingValue = escape(scriptDataString.substr(1));
}
returnValue = document.getElementById(jQuery(this).attr('id') + 'Uploader').updateSettings(settingName, settingValue);
});
if (settingValue == null) {
if (settingName == 'scriptData') {
var returnSplit = unescape(returnValue).split('&');
var returnObj = new Object();
for (var i = 0; i < returnSplit.length; i++) {
var iSplit = returnSplit[i].split('=');
returnObj[iSplit[0]] = iSplit[1];
}
returnValue = returnObj;
}
}
return returnValue;
},
Загрузка конфигурации
this.$uploadifyInputButton.uploadify({
'auto' : false,
'buttonImg' : '/img/dateiupload.gif',
'cancelImg' : '/scripts/uploadify/cancel.png',
'fileDataName' : 'file',
'fileExt' : '*.pdf;*.xls;*.doc;*.ppt;*.png;*.jpg',
'height' : 25,
'multi' : false,
'queueID' : 'uploadifyQueue',
'queueSizeLimit' : 1,
'script' : '/scripts/uploadify/uploadify.php',
'scriptData' : null,
'sizeLimit' : 10485760,
'uploader' : '/scripts/uploadify/uploadify.swf',
'width' : 122,
'onAllComplete' : function(event, queueID, fileObj, response, data) {
$.colorbox.close();
},
'onSelect' : function(event,ID,fileObj) {
that.$uploadifyInputName.val(fileObj.name);
},
'onCancel' : function(event,ID,fileObj,data){
that.$uploadifyInputName.val('');
},
'onClearQueue' : function(event){
that.$uploadifyInputName.val('');
}
});