Uploadify:使用scriptData将表单的ID作为参数传递

时间:2010-12-24 06:50:44

标签: jquery uploadify

我需要能够使用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" />

2 个答案:

答案 0 :(得分:6)

好吧,我在一分钟之前就遇到了同样的问题,这里是解决方案,你可以获得元素的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将正确发送

答案 1 :(得分:0)

如果您知道您希望每次都发送它(或者不介意不必要地发送它),您可以对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 += '&elemID=' + settings.id行中进行更改即可。