如何在事件上向 formData 附加一个值? (blueimp/jQuery-File-Upload)
How do I append a value to formData on event? (blueimp/jQuery-File-Upload)
我暂时有这个代码 ->
$('#file').fileupload({
formData: {
valueThatChangesOverTime: value,
staticValue: 0
},
maxNumberOfFiles: 1,
autoUpload: false,
dataType: 'json',
add: function (e, data) {
$('#importFilesBtn').on("click", function () {
// Set value to formData.valueThatChangesOverTime
data.submit();
})
},
done: function (e, data) {
}
});
正如您在我的评论中看到的那样,我想在单击事件时向 formData 对象附加一个值,但我不知道该怎么做。它始终保持初始值。
以前有人做过吗,你是怎么解决的?
谢谢
如果调用 add 函数作为对文件上传选项对象的引用,则 this
将设置为指向该对象。
有了这个假设,以下应该有效:
add: function (e, data) {
var fileUploadObj = this
$('#importFilesBtn').on("click", function () {
// Set value to formData.valueThatChangesOverTime
fileUploadObj.formData.valueThatChangesOverTime = 'foo'
data.submit();
})
}
编辑:另一种选择。
我想不出另一种从内部引用对象的方法,但另一种方法是利用对象链接。感觉有点脏,但是可以用。
//some external object
foo = {"changeThisValue":"value"}
$('#file').fileupload({
formData: {
valueThatChangesOverTime: foo,
staticValue: 0
},
...
add: function (e, data) {
$('#importFilesBtn').on("click", function () {
// Set value to formData.valueThatChangesOverTime
foo.changeThisValue = 'bar'
data.submit();
})
}
需要注意的是,现在处理表单数据的任何东西都必须处理一个对象,而不是直接处理值。
我不喜欢回答我自己的问题,但为了这个问题的清晰度,我认为这是最好的。我终于找到了解决方案。我没有尝试 "update" formData,而是自己将其附加到 add:
事件中,就像这样。
add: function (e, data) {
$('#importFilesBtn').on("click", function () {
data.formData = {
valueThatChangesOverTime: myNewValue,
staticValue: 0
};
data.submit();
})
},
我暂时有这个代码 ->
$('#file').fileupload({
formData: {
valueThatChangesOverTime: value,
staticValue: 0
},
maxNumberOfFiles: 1,
autoUpload: false,
dataType: 'json',
add: function (e, data) {
$('#importFilesBtn').on("click", function () {
// Set value to formData.valueThatChangesOverTime
data.submit();
})
},
done: function (e, data) {
}
});
正如您在我的评论中看到的那样,我想在单击事件时向 formData 对象附加一个值,但我不知道该怎么做。它始终保持初始值。
以前有人做过吗,你是怎么解决的? 谢谢
如果调用 add 函数作为对文件上传选项对象的引用,则 this
将设置为指向该对象。
有了这个假设,以下应该有效:
add: function (e, data) {
var fileUploadObj = this
$('#importFilesBtn').on("click", function () {
// Set value to formData.valueThatChangesOverTime
fileUploadObj.formData.valueThatChangesOverTime = 'foo'
data.submit();
})
}
编辑:另一种选择。 我想不出另一种从内部引用对象的方法,但另一种方法是利用对象链接。感觉有点脏,但是可以用。
//some external object
foo = {"changeThisValue":"value"}
$('#file').fileupload({
formData: {
valueThatChangesOverTime: foo,
staticValue: 0
},
...
add: function (e, data) {
$('#importFilesBtn').on("click", function () {
// Set value to formData.valueThatChangesOverTime
foo.changeThisValue = 'bar'
data.submit();
})
}
需要注意的是,现在处理表单数据的任何东西都必须处理一个对象,而不是直接处理值。
我不喜欢回答我自己的问题,但为了这个问题的清晰度,我认为这是最好的。我终于找到了解决方案。我没有尝试 "update" formData,而是自己将其附加到 add:
事件中,就像这样。
add: function (e, data) {
$('#importFilesBtn').on("click", function () {
data.formData = {
valueThatChangesOverTime: myNewValue,
staticValue: 0
};
data.submit();
})
},