我暂时拥有此代码 - >
$('#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) {
}
});
正如您在我的评论中看到的,我想在click事件上向formData对象追加一个值,但我无法弄清楚如何做到这一点。它始终保持初始值。
之前有人这样做了,你是如何解决的? 感谢。
答案 0 :(得分:0)
如果调用add函数作为fileupload选项对象的引用,则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();
})
}
警告是,现在处理formdata必须处理一个对象而不是直接处理该值。
答案 1 :(得分:0)
我不想回答我自己的问题,但为了清楚这个问题,我认为这是最好的。我终于找到了解决方案。而不是试图更新"我自己在add:
事件中附加了formData,就像这样。
add: function (e, data) {
$('#importFilesBtn').on("click", function () {
data.formData = {
valueThatChangesOverTime: myNewValue,
staticValue: 0
};
data.submit();
})
},