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

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

由于我将在一个页面上有数百个上传按钮,我想创建一个通用实例,所以我使用表单的类而不是表单的ID来完成。 但是,当单击其中一个输入时,我想将该输入的ID作为scriptData传递给PHP。 这不起作用; PHP说’formId’是未定义的。

有没有一种好方法获取正在使用的表单输入的ID属性,并将其传递给上传PHP? 或者是否有完全不同的更好的方法来实现这一目标? 先感谢您!!

 $(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')} }); });   

输入看起来像这样:

    

好吧,我在一分钟之前就遇到了同样的问题,这里是解决方案,你可以在onSelect事件中定义一个函数来获取元素的ID,如下所示

//编辑这是工作代码

 $('.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将被正确发送

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