我用我的骨干应用程序的jQuery文件上传。
我在POST数据所面临的问题也就是当我上传的数据则只有文件 所选择的发表对象和一个 ID将被添加这是 在FORMDATA initializeFileUpload函数初始化这initializeFileUpload功能负载的OnLoad
this.ui.uploadAppFile 是jquery对象
initializeFileUpload:函数(){
VAR的=这一点,
文件=;
VAR的选择= {
网址:FSGlobals.baseURL +请求/ req_bu_files /文件',
maxFileSize为:5000000 // 5MB
FORMDATA:{
标识:that.requestHeaderMod.get(ID),
},
地址:功能(即数据){
文件=(数据&安培;&放大器; data.files [0]放大器;&放大器; data.files [0]。名称)|| ;
that.manualPostData =数据;
that.ui.filePlaceholder.val(文件).change();
}
};
如果($('HTML')。hasClass(IE9')|| $('HTML')。hasClass(LT-IE9)){
options.forceIframeTransport = TRUE;
} 其他 {
options.dataType ='json的';
}
this.ui.uploadAppFile.fileupload(选件);
}
我有一个按钮提交,并在提交时的的我要增加两个ID在日志对象。的
UploadAction:函数(){
VAR的=这一点;
this.manualPostData.submit()。
完成(功能(数据,textStatus,jqXHR){
})
.fail(功能(jqXHR,textStatus,errorThrown){
});
}
现在我试图找到FORMDATA在 this.manualPostData ,但我找不到 FORMDATA 在里面。
提交后,我看到网络它显示与文件[]和Id FORMDATA对象,它在声明 initializeFileUpload
解决方案我发现了一个解决方案:
在提交传递自己的价值观为 FORMDATA 。但你可以 看到问题还有一个方法,即 initializeFileUpload 你必须初始化你的文件了装载机的设置和所有的东西。 因为如果没有则在提交时,你不明白 this.manualPostData 作为文件了装载机对象
UploadAction:函数(){
VAR的=这一点;
this.manualPostData.formData = {
的requestId:that.requestHeaderMod.get(ID),
状态:假的,
APPID:this.ui.appListSelect.select2(VAL),
appDimensionId:this.ui.appDimListSelect.select2(VAL),
行动code:this.ui.action codeSelect.select2(VAL)
}
this.manualPostData.submit()
.done(功能(数据,textStatus,jqXHR){
//
})
.fail(功能(jqXHR,textStatus,errorThrown){
//失败
});
和传递FORMDATA = {}在initializeFileUpload其他明智的,你必须使用
$扩展(旧的对象,新对象);
在提交时
I am using jQuery file uploader in my Backbone application.
I am facing problem in POST data i.e when I upload data then only file which is selected will be added in POST object and one id which is initialized in initializeFileUpload function in formData and this initializeFileUpload function is load in OnLoad
this.ui.uploadAppFile is jquery object
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);
}
I have one button Submit and at submit time I have to add two more id's in Post Object.
UploadAction: function() {
var that = this;
this.manualPostData.submit().
done(function(data, textStatus, jqXHR) {
})
.fail(function(jqXHR, textStatus, errorThrown) {
});
}
Now I try to find formData in this.manualPostData but I can't find formData in it.
After Submit I see in Network it's showing formData object with file[] and Id which is declared in initializeFileUpload
解决方案
I found One solution:
Before submit pass your values to formData. But as you can see in question there is one more method i.e initializeFileUpload you have to initialize your file up-loader setting and all stuff. because if not then at submit time you dont get this.manualPostData As file up-loader object
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
});
And pass Formdata={} in initializeFileUpload other wise you have to use
$.extend(OLd Object, New Object);
at submit time