Uploadify не проходит через параметры scriptData - PullRequest
1 голос
/ 06 сентября 2011

Я использую скрипт Uploadify на своем сайте и пытаюсь установить параметр scriptData на основе некоторых полей формы.Это HTML / JS:

<script type="text/javascript">

    function UploadFile() {
        $('#file_upload').uploadifySettings({
            scriptData: $('#uploadForm').serializeObject()
        });

        $('#file_upload').uploadifyUpload();
    }

    $(document).ready(function () {
        $('#file_upload').uploadify({
            'uploader': '/Scripts/uploadify/uploadify.swf',
            'script': '/File/Upload',
            'cancelImg': '/Scripts/uploadify/cancel.png',
            'folder': '/uploads',
            'fileExt': '*.doc, *.pdf',
            'buttonText': 'Select File',
            'auto': false,
            'onSelect': function (event, ID, fileObj) {
                $('#uploadForm #FileName').val(fileObj.name);           
            }
        });
    });
</script>
<form id="uploadForm">
<div><label for="Description">Description</label> <input id="Description" name="Description" type="text" value="" /></div>
<div><label for="FileName">File Name</label> <input id="FileName" name="FileName" type="text" value="" /></div>    <input id="file_upload" name="file_upload" type="file" />
<button onclick="UploadFile();" type="button">Upload</button>
</form>

serializeObject просто использует плагин serializeobject jQuery для преобразования значений формы в объект json

Загружаетфайл в порядке, но ничего в scriptData не отправлено.Я проверил в fiddler & единственные значения формы - те из скрипта uploadify: folder, fileext, Filedata & Upload.

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

У меня была такая же проблема. Мое решение состояло в том, чтобы добавить обработчик onSelectOnce, который создает соответствующий объект scriptData и затем вызывается uploadifySettings, чтобы присоединить его. Нечто подобное должно работать в вашем случае:

onSelectOnce: function() {
    var data = $('#uploadForm').serializeObject();
    $('#file_upload').uploadifySettings('scriptData', data);
    return true;
}

Немного клуджа, но у меня все заработало.

0 голосов
/ 06 сентября 2011

Ааааа, так что я просто не правильно прочитал документ , я делал это, чтобы установить scriptData:

$('#file_upload').uploadifySettings({
    scriptData: $('#uploadForm').serializeObject()
});

Когда то, что мне нужно было сделать, было

$('#file_upload').uploadifySettings('scriptData', $('#uploadForm').serializeObject());

Теперь работает

...