【问题标题】:Uploadify: Passing a form's ID as a parameter with scriptDataUploadify:使用 scriptData 将表单的 ID 作为参数传递
【发布时间】:2010-12-24 06:50:44
【问题描述】:

我需要能够使用 Uploadify 在一个页面(可能有数百个)上进行多个上传输入。上传 PHP 文件将根据用于提交的输入按钮的 ID 重命名上传的文件,因此需要该 ID。

由于我将在一个页面上拥有数百个上传按钮,因此我想创建一个通用实例化,因此我使用表单的类而不是表单的 ID 来完成此操作。但是,当单击其中一个输入时,我想将该输入的 ID 作为 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" />

【问题讨论】:

    标签: jquery uploadify


    【解决方案1】:

    一分钟前我还在为同样的问题苦苦挣扎,这里是解决方案,您可以获取元素的 ID 作为在 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 将被正确发送

    【讨论】:

    • 对不起,由于变量在它定义的函数中的生命最后,scriptData 选项无法识别变量 elem_id。所以仍然没有解决这个问题:)
    • $(event.target).uploadifySettings('scriptData',{'formID':elem_id})
    • 这个解决方案返回 undefined
    • @CamrinParnell 好像在 3.2 版本上修改了 uploadify,uploadify.com/documentation/uploadify/onselect,你可以在 2.1.4 版本上这样使用 onSelect 事件
    • 最终修改了插件来实现这一点。谢谢
    【解决方案2】:

    如果您知道您希望每次都发送它(或者不介意不必要地发送它),您可以对 Uploadify.js 文件进行简单的编辑。

    替换这个 if 子句(从 Uploadify v2.1.4 的第 74 行开始):

    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的任何其他元素一样访问元素ID:

    $thisInputID = $_POST["elemID"];
    

    如果您想使用其他名称访问 ID(此处为 elemID),只需在上面的 scriptDataString += '&amp;elemID=' + settings.id 行中更改它即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      • 2023-03-15
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      相关资源
      最近更新 更多