我在 Backbone 应用程序中使用jQuery文件上传器。
我在POST数据中遇到问题,即当我上传数据时,只有文件 选中的内容将添加到 POST对象和一个 id 中 在formData 中的 initializeFileUpload函数中初始化,并且此initializeFileUpload函数在 OnLoad
中加载
this.ui.uploadAppFile 是jquery对象
的
的initializeFileUpload: function() {
var that = this,
file = "";
var options = {
url: FSGlobals.baseURL + 'requests/req_bu_files/file',
maxFileSize: 5000000, // 5MB
formData: {
"Id": that.requestHeaderMod.get("id"),
},
add: function(e, data) {
file = (data && data.files[0] && data.files[0].name) || "";
that.manualPostData = data;
that.ui.filePlaceholder.val(file).change();
}
};
if ($('html').hasClass('ie9') || $('html').hasClass('lt-ie9')) {
options.forceIframeTransport = true;
} else {
options.dataType = 'json';
}
this.ui.uploadAppFile.fileupload(options);
}
的
我有一个按钮提交,在提交时 我必须在帖子对象中再添加两个ID。
的
的UploadAction: function() {
var that = this;
this.manualPostData.submit().
done(function(data, textStatus, jqXHR) {
})
.fail(function(jqXHR, textStatus, errorThrown) {
});
}
的
现在我尝试在 this.manualPostData 中找到formData,但我找不到 formData 。
提交后我在网络中看到它显示了带有file []和id的formData对象 initializeFileUpload
答案 0 :(得分:0)
According to the documentation, you can use the method submit to add additional values to the request:
https://github.com/blueimp/jQuery-File-Upload/wiki/Options#submit
这是我创建的一个小提琴,用于演示如何覆盖该方法。
https://jsfiddle.net/LtzvL6s9/
submit: function(e, data) {
console.log('submit',data, data.formData)
data.formData = $.extend({}, {'other': 2}, data.formData);
}
我无法发送原始ID,然后在表单中附加其他数据,但您可以在提交方法中添加所需的所有内容。
希望这有助于解决您的问题。
答案 1 :(得分:0)
我找到了一个解决方案:
在提交之前将您的值传递给 formData 。但是你可以 有问题的还有一种方法,即 initializeFileUpload 你必须初始化你的文件up-loader设置和所有东西。 因为如果不是那么在提交时你不会得到 this.manualPostData 作为文件上载程序对象
的
的UploadAction: function() {
var that = this;
this.manualPostData.formData = {
"requestId": that.requestHeaderMod.get("id"),
"status": false,
"appId": this.ui.appListSelect.select2("val"),
"appDimensionId": this.ui.appDimListSelect.select2("val"),
"actionCode": this.ui.actionCodeSelect.select2("val")
}
this.manualPostData.submit()
.done(function(data, textStatus, jqXHR) {
//
})
.fail(function(jqXHR, textStatus, errorThrown) {
//Fail
});
的
并在initializeFileUpload中传递Formdata = {},否则你必须使用
的
的$.extend(OLd Object, New Object);
的 在提交时