Здравствуйте, уважаемые форумчане.
Речь пойдет о плагине для jQuery -
Uploadify (мультизагрузка файлов на связке JS + SWF + PHP).
Установлена свежая (3.2) версия Uploadify и jQuery 1.5.2.
Задача: вместе с загрузкой нескольких файлов отправлять в php-скрипт какие-то данные (скажем, текстовую переменную). Значение этой переменной зависит от действий пользователя на странице и не может быть известно заранее (ниже объясню, почему это важно).
Для решения этой, казалось бы, простой задачи в плагине предусмотрен параметр formData:
$(document).ready(function() {
$('#file_upload').uploadify({
'swf' : 'uploadify/uploadify.swf',
'uploader' : 'uploadify/uploadify.php',
'formData' : {'someKey' : 'someValue'}
});
});
В скрипте uploadify.php пишем одну единственную строку:
echo $_POST['someKey'];
Результат - ожидаемый, скрипт вернет "someValue".
Теперь самое интересное. Вот пользователь произвел какие-то действия и значение переменной someKey необходимо изменить. В документации по uploadify сказано следующее: "
If you plan on setting these values dynamically, this should be done using the ‘settings’ method in the onUploadStart event" (если вы планируете менять эти значения динамически, следует использовать метод 'settings' в событии onUploadStart). И даже приведен пример, где после строки с formData добавлен обработчик события onUploadStart:
$(document).ready(function() {
$('#file_upload').uploadify({
'swf' : 'uploadify/uploadify.swf',
'uploader' : 'uploadify/uploadify.php',
'formData' : {'someKey' : 'someValue'},
'onUploadStart' : function(file) {
$("#file_upload").uploadify("settings", "someKey", "Новое значение");
}
});
});
Принимаем значение скриптом uploadify.php и видим старое значение ("someValue")! Определенное при объявлении formData, но никак ни при onUploadStart!
Закрадываются мысли: а может, там ничего не переопределилось? Дописываем старый добрый alert:
$(document).ready(function() {
$('#file_upload').uploadify({
'swf' : 'uploadify/uploadify.swf',
'uploader' : 'uploadify/uploadify.php',
'formData' : {'someKey' : 'someValue'},
'onUploadStart' : function(file) {
$("#file_upload").uploadify("settings", "someKey", "Новое значение");
alert($("#file_upload").uploadify('settings', 'someKey'));
}
});
});
И alert выводит "Новое значение", как и должно быть. А через доли секунды php-скрипт возвращает нам "someValue"
Как же быть, помогите пожалуйста, как же мне передать вместе с загружаемыми файлами какие-нибудь данные?
Желательно в пределах uploadify или просто средствами jQuery, но если вы знаете очень хороший аналог uploadify, то напишите его название в этой теме, пожалуйста.
Заранее благодарю.