Uploadify,无法访问$ _POST数据

时间:2010-11-20 01:05:53

标签: php javascript jquery json uploadify

我第一次尝试使用Uploadify。我对实际上传的文件没有任何问题。这非常有效。我的问题是我的PHP脚本没有收到来自Uploadify的单个$ _REQUEST变量,这显然意味着我无法跟踪任何照片或删除应该删除的照片。这是我正在使用的:

$('.upload').uploadify({
    'uploader'  : 'uploadify/uploadify.swf',
    'script'    : 'upload.php',
    'cancelImg' : 'uploadify/cancel.png',
    'folder'    : 'img/sections/' + page,
    'auto'      : true,
    'multi'     : false,
    'method'    : 'post',
    'fileExt'   : '*.jpg;*.jpeg;*.gif;*.png',
    'onComplete': function(event, ID, fileObj, response, data) {
          window.location.replace("upload.php");                        
    }
});

我正在尝试通过在我的点击功能中设置输入字段ID到PHP脚本(每个字段显示当前照片,当您点击它时淡出并显示uploadify表单):

Uploader.clk = function() {
    pic = $(this).find('input.upload').attr('id');
    field = "#" + pic;
    $(field).uploadifySettings('scriptData' : { 'field' : field });
    // all my jQuery animations
}

当然,这对我不起作用,但是上传文档还有很多不足之处。我的问题肯定在uploadifySettings调用中,因为当我评论它所有其他的东西工作正常。即使我把

  

'scriptData':{'foo':'bar'}

在我的设置中,我仍然只在我的$ _REQUEST数组中获得一个sessionid和两个名为“utma”和“vsid”的字段。

所以我的问题是如何告诉我的PHP脚本它在哪个字段上执行操作?

1 个答案:

答案 0 :(得分:0)

这里有两个问题,没有必要两次选择元素,你可以这样做:

$(this).find("input.upload").uploadifySettings(...);

你需要将你的设置作为对象传递(它只是当前的标签声明),如下所示:

Uploader.clk = function() {
  $(this).find('input.upload')
         .uploadifySettings({'scriptData' : { 'field' : field }});
  // all my jQuery animations
}

另请注意,您per the documentation无论如何都需要使用onSelectOnce

  

如果通过scriptData更新uploadifySettings()选项,则由于onOpen的同步问题,它不会更新。相反,请使用onSelectOnce功能在自动上传期间更改scriptData变量。

总的来说,它应该是这样的:

$('.upload').uploadify({
    'uploader'  : 'uploadify/uploadify.swf',
    'script'    : 'upload.php',
    'cancelImg' : 'uploadify/cancel.png',
    'folder'    : 'img/sections/' + page,
    'auto'      : true,
    'multi'     : false,
    'method'    : 'post',
    'fileExt'   : '*.jpg;*.jpeg;*.gif;*.png',
    'onComplete': function(event, ID, fileObj, response, data) {
          window.location.replace("upload.php");                        
    },
    'onSelectOnce': function(event,data) {
          $(this).uploadifySettings({'scriptData' : { 'field' : field }});
    }        
});