Uploadify: передача идентификатора формы в качестве параметра с помощью scriptData - PullRequest
3 голосов
/ 24 декабря 2010

Мне нужна возможность загружать несколько входов на одну страницу (возможно, сотни) с помощью Uploadify.Загружаемый файл PHP будет переименовывать загруженный файл на основе идентификатора кнопки ввода, использованной для его отправки, поэтому ему потребуется этот идентификатор.

Поскольку у меня будут сотни кнопок загрузки на одной странице, я хотел создать универсальный экземпляр, поэтому я сделал это, используя класс форм, а не идентификатор форм.Тем не менее, когда щелкает один из входов, я хотел бы передать идентификатор этого ввода как scriptData в PHP.Это не работает;PHP говорит, что 'formId' не определен.

Есть ли хороший способ получить атрибут ID используемого ввода формы и передать его в загружаемый PHP?Или есть совершенно другой и лучший способ сделать это?Заранее спасибо !!

  <script type="text/javascript">
    $(document).ready(function() {
      $('.uploady').uploadify({
        'uploader'  : '/uploadify/uploadify.swf',
        'script'    : '/uploadify/uploadify.php',
        'cancelImg' : '/uploadify/cancel.png',
        'folder'    : '/uploadify',
        'auto'      : true,
      // LINE IN QUESTION
      'scriptData'  : {'formId':$(this).attr('id')}
  });
});
</script>
</head>

Входные данные выглядят так:

<input id="file_upload1" class="uploady" name="file_upload" type="file" />
<input id="file_upload2" class="uploady" name="file_upload" type="file" />
<input id="file_upload3" class="uploady" name="file_upload" type="file" />

Ответы [ 2 ]

6 голосов
/ 11 января 2011

ну, я боролся с той же проблемой всего минуту назад, и вот решение, вы можете получить идентификатор элемента, который определяет функцию в событии onSelect, как показано ниже

// РЕДАКТИРОВАТЬ Вот рабочий код

$('.uploady').uploadify({
    'uploader'  : '/uploadify/uploadify.swf',
    'script'    : '/uploadify/uploadify.php',
    'cancelImg' : '/uploadify/cancel.png',
    'folder'    : '/uploadify',
    'auto'      : true,
    // ANSWER
    'onSelect'    : function(event,ID,fileObj) {
        var elem_id = $(event.target).attr("id"); //here you get the id of the object.
        $("#"+elem_id).uploadifySettings('scriptData',{'formID':elem_id})
    },
});

теперь ваш formID будет отправлен правильно

0 голосов
/ 30 июня 2011

Если вы знаете, что хотите, чтобы он отправлялся каждый раз (или не возражаете против его отправки без необходимости), вы можете просто отредактировать файл Uploadify.js.

Замените это условие if (начало строки 74 в Uploadify v2.1.4):

if (settings.scriptData) {
    var scriptDataString = '';
    for (var name in settings.scriptData) {
        scriptDataString += '&' + name + '=' + settings.scriptData[name];
    }
    data.scriptData = escape(scriptDataString.substr(1));
}

со следующим:

if (settings.scriptData) {
    var scriptDataString = '';
    for (var name in settings.scriptData) {
        scriptDataString += '&' + name + '=' + settings.scriptData[name];
    }
}
scriptDataString += '&elemID=' + settings.id;
data.scriptData = escape(scriptDataString.substr(1));

В бэкэнде идентификатор элемента доступен, как и любой другой элемент scriptData:

$thisInputID = $_POST["elemID"];

Если вы хотите получить доступ к идентификатору с другим именем (здесь это elemID), просто измените его в строке scriptDataString += '&elemID=' + settings.id выше.

...