【问题标题】:Uploadifive dynamically posting input variablesUploadifive 动态发布输入变量
【发布时间】:2014-04-20 13:25:24
【问题描述】:

下面的问题是,当函数启动时,MyInputVariable当然是空的。

<?php $timestamp = time();?>
$(function () {
    $('#file_upload').uploadifive({
        'auto': false,
        'dnd': true,
        'checkScript': 'check-exists.php',
        'formData': {
            'timestamp': '<?php echo $timestamp;?>',
            'token': '<?php echo md5('unique_salt' . $timestamp);?>',
            'MyNumber': $('#MyInputVariable').val(),
        },
        'queueID': 'queue',
        'uploadScript': 'upload.php',
        'onUploadComplete': function(file, data) {console.log(data);}
    });
});

一定有办法煽动onUploadonUploadCompleteonUploadFile或更新formData,但我不知道该怎么做。


请注意,这是uploadiFIVE,而不是uploadify。功能/方法差异很大,解决方案可能不适用于两者。

【问题讨论】:

    标签: jquery post file-upload input uploadifive


    【解决方案1】:

    我认为这是最好的答案

    How to submit dynamic variables with uploadifive

    替换这个:

    'formData': {
            'timestamp': '<?php echo $timestamp;?>',
            'token': '<?php echo md5('unique_salt' . $timestamp);?>',
            'MyNumber': $('#MyInputVariable').val(),
        },
    

    通过这个:

    'onUpload' : function(){
    $('#file_upload').data('uploadifive').settings.formData = {
            'timestamp': '<?php echo $timestamp;?>',
            'token': '<?php echo md5('unique_salt' . $timestamp);?>',
            'MyNumber': $('#MyInputVariable').val(),
    }},
    

    这是完整的代码:

    <?php $timestamp = time();?>
    $(function () {
        $('#file_upload').uploadifive({
            'auto': false,
            'dnd': true,
            'checkScript': 'check-exists.php',
            'onUpload' : function(){
                    $('#file_upload').data('uploadifive').settings.formData = {
                            'timestamp': '<?php echo $timestamp;?>',
                            'token': '<?php echo md5('unique_salt' . $timestamp);?>',
                            'MyNumber': $('#MyInputVariable').val(),
                                }},
            'queueID': 'queue',
            'uploadScript': 'upload.php',
            'onUploadComplete': function(file, data) {console.log(data);}
        });
    });
    

    【讨论】:

    • 对我来说看起来像是一个更正确的 jQuery 示例!谢谢!
    【解决方案2】:

    在 uplodive 论坛上对误导性解决方案进行了数小时的试验后,这就是解决方案。

    在您的 HTML 锚标记中:

    <input id="file_upload" name="file_upload" type="file" multiple="true">
    <a style="position: relative; top: 8px;" href="javascript:$('#file_upload').uploadifive('upload')">Upload Files</a>
    

    将锚标记更改为:

    <a style="position: relative; top: 8px;" href="javascript:uploadFiles();">Upload Files</a>
    

    从初始函数调用中完全消除 formData 设置,使其看起来像这样:

    $(function()
    {
        $('#file_upload').uploadifive(
        {
            'auto'               : false,
            'dnd'                : true,
            'checkScript'        : 'check-exists.php',
            'queueID'            : 'queue',
            'uploadScript'       : 'upload.php',
            'onUploadComplete'   : function(file, data) {console.log(data);}
        });
    });
    

    比添加这个功能:

       function uploadFiles()
       {
          $('#file_upload').data('uploadifive').settings.formData =
          {
             'timestamp' : '<?php echo $timestamp;?>',
             'token'     : '<?php echo md5('unique_salt' . $timestamp);?>',
             'MyNumber'  : $('#MyInputVariable').val()
          },
          $('#file_upload').uploadifive('upload');
       }
    

    以及您需要添加的任何其他变量。 您的输入变量现在将在上传时发布。

    【讨论】:

    • 这太完美了!谢谢。
    • 对自动上传有什么建议吗(auto=true)?只有当auto设置为false并点击链接调用上传函数时才有效
    猜你喜欢
    • 1970-01-01
    • 2013-07-08
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多