我正在将AJAX上传器http://valums.com/ajax-upload/集成到我的应用程序中。默认情况下,脚本会将上载的文件转储到一个指定的目录中。我修改它以便它接收参数:两个文件夹的名称 - 年和月,所以它可以是例如uploads / 2010 / May /而不是uploads /但它仍然会将文件转储到uploads文件夹中,除非我明确地将这两个文件夹名称声明为字符串。
以下代码位于我的$(document).ready函数内。
var uploader = new qq.FileUploader({
element: document.getElementById('uploadfile'),
action: 'ajax/uploader.php',
allowedExtensions: ["xls"],
params: {
f: '2010',//document.getElementById('fileyear').value,
g: 'May'//document.getElementById('filemonth').value
}
});
如上所示,我评论了实际的行,而是使用虚拟值来检查[并且它以这种方式工作正常]。
我尝试过使用f:$(#fileyear).val(),g:$(#filemonth).val()并且它不起作用所以我必须默认使用document.getElementById,如上所述。在上传器变量外,这两个值是正确的。
另一个函数将日期存储到这些隐藏的输入中,我将它们更改为普通的文本输入,以确保它正确存储它们。
我猜这里的问题可能只是上传者可能在创建之前设法获取(空白)值?或者这与上传有关吗?或者我的文件准备好了吗?拜托,我真的需要帮助 - 整天都在喋喋不休。提前谢谢!
答案 0 :(得分:2)
您为document.getElementByID('fileyear').value
等获取的值将是加载DOM后立即显示的值,而不是您随后通过在表单中键入来更改它的值。
我会将“f”和“g”选项放入上传者调用的函数中以获取这些值。通过这种方式,您将获得调用时的值,而不是它们的初始值(空?)。
答案 1 :(得分:0)
var uploader = new qq.FileUploader({
element: document.getElementById('uploadfile'),
action: 'ajax/uploader.php',
allowedExtensions: ["xls"]
});
$('your_button_id').click(function(){
uploader.setParams({
f: document.getElementById('fileyear').value,
g: document.getElementById('filemonth').value
});
});
或
var uploader = new qq.FileUploader({
element: document.getElementById('uploadfile'),
action: 'ajax/uploader.php',
allowedExtensions: ["xls"],
params: {
f: (document.getElementById('fileyear')) ? document.getElementById('fileyear').value : 2010,
g: (document.getElementById('filemonth')) ? document.getElementById('filemonth').value : 'May'
}
});