Uploadify, не может получить доступ к данным $ _POST - PullRequest
0 голосов
/ 20 ноября 2010

Я пытаюсь использовать Uploadify в первый раз.У меня нет проблем с загрузкой файла.Это работает отлично.Моя проблема в том, что мой PHP-скрипт не получает ни одной переменной $ _REQUEST от Uploadify, что, очевидно, означает, что я не могу отслеживать ни одну из фотографий или удалить те, которые должны быть удалены.Вот что я использую:

$('.upload').uploadify({
    'uploader'  : 'uploadify/uploadify.swf',
    'script'    : 'upload.php',
    'cancelImg' : 'uploadify/cancel.png',
    'folder'    : 'img/sections/' + page,
    'auto'      : true,
    'multi'     : false,
    'method'    : 'post',
    'fileExt'   : '*.jpg;*.jpeg;*.gif;*.png',
    'onComplete': function(event, ID, fileObj, response, data) {
          window.location.replace("upload.php");                        
    }
});

Я пытаюсь отправить идентификатор поля ввода в скрипт PHP, установив его в своей функции щелчка (каждое поле показывает текущую фотографию, а когда вы нажимаете, она исчезаети показывает форму загрузки):

Uploader.clk = function() {
    pic = $(this).find('input.upload').attr('id');
    field = "#" + pic;
    $(field).uploadifySettings('scriptData' : { 'field' : field });
    // all my jQuery animations
}

Конечно, это не работает для меня, но документация Uploadify оставляет желать лучшего.Моя проблема определенно в вызове uploadifySettings, так как, когда я закомментирую его, все остальные вещи работают нормально.Даже если я добавлю

'scriptData': {'foo': 'bar'}

в мои настройки, я все равно получу только sessionid и два поля с именем "utma""и" vsid "в моем массиве $ _REQUEST.

Итак, мой вопрос: как мне указать моему PHP-сценарию, над каким полем он выполняет операции?

1 Ответ

0 голосов
/ 20 ноября 2010

Здесь две проблемы, нет необходимости выбирать элемент дважды, вы можете просто сделать:

$(this).find("input.upload").uploadifySettings(...);

И вам нужно передать ваши настройки как объект (в настоящее время это просто объявление метки), например:

Uploader.clk = function() {
  $(this).find('input.upload')
         .uploadifySettings({'scriptData' : { 'field' : field }});
  // all my jQuery animations
}

Также обратите внимание, что согласно документации вам необходимо в любом случае использовать onSelectOnce:

При обновлении параметра scriptData с помощью uploadifySettings() он не будет обновляться из-за проблем синхронизации с onOpen. Вместо этого используйте функцию onSelectOnce для изменения переменной scriptData во время автоматической загрузки.

В целом, это должно выглядеть так:

$('.upload').uploadify({
    'uploader'  : 'uploadify/uploadify.swf',
    'script'    : 'upload.php',
    'cancelImg' : 'uploadify/cancel.png',
    'folder'    : 'img/sections/' + page,
    'auto'      : true,
    'multi'     : false,
    'method'    : 'post',
    'fileExt'   : '*.jpg;*.jpeg;*.gif;*.png',
    'onComplete': function(event, ID, fileObj, response, data) {
          window.location.replace("upload.php");                        
    },
    'onSelectOnce': function(event,data) {
          $(this).uploadifySettings({'scriptData' : { 'field' : field }});
    }        
});
...