Показать сообщение отдельно
  #1 (permalink)  
Старый 30.08.2012, 19:00
Интересующийся
Отправить личное сообщение для frutality Посмотреть профиль Найти все сообщения от frutality
 
Регистрация: 30.08.2012
Сообщений: 26

Передача данных из Uploadify в php
Здравствуйте, уважаемые форумчане.

Речь пойдет о плагине для 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, то напишите его название в этой теме, пожалуйста.

Заранее благодарю.
Ответить с цитированием