3

我正在尝试使用这 2 个 jQuery 插件:pluploadjQuery Form Plugin ajaxForm

它工作正常,除了一件事:我无法发送以前使用 plupload 上传的文件的 file.name(使用 ajaxForm)。

我稍微解释一下:用户使用 plupload 发送一个文件。文件已上传。它工作正常。

然后,用户使用 ajaxForm 提交表单并使用 post 方法发送表单数据 + 文件名。

我知道如何使用 ajaxform 发送数据,这段代码可以正常工作:

var value1 = "dynamic_value1";
$('#my_form').ajaxForm({ 
        // datas is sent in post method, it works fine
        data: { value1: value1 }, 
        beforeSubmit: validate,
            success: function() { 
            // it's ok :
            //alert(value1);
        } 
    });

但是我不能用 pluplopad file.name 执行此操作,如果我发出警报但我无法发送它,我可以看到文件名:

Plupload 代码以获取文件名(有效): var file_name_vous;

uploader.bind('FileUploaded', function(up, file, response) {

            // It's ok : i can get file name, alert show me the file name
            file_name_vous = encodeURIComponent(file.name);
            alert(file_name_vous);
        //};
    });
});

但我不能这样做,这段代码不起作用:

$participer_form.ajaxForm({ 
        type: 'POST',
        data: { 
        // impossible to send this var
        file_name_vous: file_name_vous
        }, 
        beforeSubmit: validate,

            // success 
            success: function() { 
                // It's ok, alert shows the file name 
                alert(file_name_vous);    
        } 
    });

所以我不明白,我可以用post方法发送数据,我已经测试过了。但我不能发送这个特定的 var:file_name_vous = encodeURIComponent(file.name);

你知道在尝试通过 post 方法发送之前我应该​​对 (file.name) 做些什么吗?

我没有错误,只是在萤火虫网络/XHR 中,我没有看到任何关于这个 var 的信息。如果我用 var value1 = "dynamic_value1" 替换这个 var,它就可以工作。所以我想,我的问题是关于这个partuliar var file.name

4

1 回答 1

2

也许您应该省略 ajax 表单的数据部分,只需在成功上传后创建一个隐藏字段,该字段将与您的表单一起提交。

像这样的东西:

uploader.bind('FileUploaded', function(up, file, response) {

            // It's ok : i can get file name, alert show me the file name
            file_name_vous = encodeURIComponent(file.name);
            // maybe you'll have to check if hidden filed already exists
            $participer_form.Append($('<input type="hidden" value="'+file_name_vous+'" id="file_name_vous" name="file_name_vous"/>'));
        //};

希望这会有所帮助

顺便说一句,你有没有试过这个,尽可能晚地设置值?

uploader.bind('FileUploaded', function(up, file, response) {

            // It's ok : i can get file name, alert show me the file name
            file_name_vous = encodeURIComponent(file.name);
    $participer_form.ajaxForm({ 
            type: 'POST',
            data: { 
            // impossible to send this var
            file_name_vous: file_name_vous
            }, 
            beforeSubmit: validate,

                // success 
                success: function() { 
                    // It's ok, alert shows the file name 
                    alert(file_name_vous);    
            } 
        });
    });
于 2013-02-20T09:34:49.437 回答