jQuery文件上传不提交额外的参数

时间:2013-03-26 21:11:21

标签: javascript jquery blueimp jquery-file-upload

我需要使用jQuery File Upload控件中提供的formData参数,在提交时将其他数据发送到服务器。 formData的默认实现是调用一个函数来捕获表单中的所有控件并将它们序列化为一个数组(使用jQuery serializeArray()方法)。

我的表单中有控件,但是当文件上传时,我没有收到任何其他数据。当我通过Fiddler进行检查时,请求中没有任何内容显示正在提交这些表单字段。

是否需要做一些额外的工作来提交这些内容?

不过,这两个链接讨论了formData ......

https://github.com/blueimp/jQuery-File-Upload/wiki/Submit-files-asynchronously https://github.com/blueimp/jQuery-File-Upload/wiki/Options ...为此搜索formData的页面。

为了它的价值,multipart选项设置为true。

4 个答案:

答案 0 :(得分:11)

我还需要传递一个额外的参数,这是我使用的:

$('#fileupload').fileupload({
    formData: {
                    param1: 'test'
                    ,param2: "value2"
                    ,param3: "yasseshaikh"
              }
});

formData option可用于以编程方式设置其他表单数据。

答案 1 :(得分:1)

完整代码(我修改了Yasser提供的答案)

将这些代码添加到jquery.fileupload.js

submit: function (e, data) {

    $('#fileupload').fileupload({
          formData: {
                 param1: 'test'
                ,param2: "value2"
                ,param3: "yasseshaikh"
          }
    });
},

答案 2 :(得分:0)

如果blueimp插件不是必需的,我会推荐jquery malsup表格。

您可以使用常规的多部分表单,只需创建一个常规文件输入字段以及您自己选择的其他输入字段,所有内容都会照常提交。

参考:http://www.malsup.com/jquery/form/

代码示例:

$('#myForm2').submit(function() { 
    $(this).ajaxSubmit(options); 
    return false; 
}); 

答案 3 :(得分:0)

您必须将数据绑定到fileupload。看看这个问题 Blueimp jQuery file upload, passing extra form data