我有一个脚本将formdata发送到php文件然后进行处理。
formdata是一个文件数组,但我现在想要发送一些包含文件原始修改日期时间的字符串。我认为这只是一个简单的单行,但它不起作用,我不知道为什么。
目标代码:
var app = app || {};
(function(o){
"use strict"
var ajax, getFormData, setProgress;
ajax = function(data){
var xmlhttp = new XMLHttpRequest(), uploaded;
xmlhttp.addEventListener('onreadystatechange', function(){
if(xmlhttp.readystate === 4){
if(xmlhttp.status === 200){
$('#pt').html("Upload complete");
} else {
$('#pt').html("Upload Error, please try again");
}
}
});
xmlhttp.upload.addEventListener('progress', function(event){
var percent;
if(event.lengthComputable === true){
percent = Math.round(event.loaded / event.total * 100);
setProgress(percent);
}
});
xmlhttp.open('POST', o.options.processor);
xmlhttp.send(data);
}
getFormData = function(src){
var data = new FormData(), i;
for(i=0;i<src.length;i++){
data.append('file[]',src[i]);
Here -----> // fileDate = new Date(src[i].lastModified)
----------> // data.append(fileDate)
}
data.append('formSent',true);
return data;
}
setProgress = function(val){
$('#pb').animate({width:val+"%"},10);
$('#pt').html(val+"%");
}
o.uploader = function(opt){
o.options = opt;
if(o.options.files !== undefined){
ajax(getFormData(o.options.files.files));
}
}
}(app));
调用对象:
$('#submit').click(function(e){
e.preventDefault();
$('#progressContainer').slideDown(10);
var f = $('#file'),
pb = $('#pb'),
pt = $('#pt');
fileDate = new Date(f.files[0].lastModified)
alert(fileDate)
// Upload file to server
app.uploader({
files:f,
progressBar:pb,
progressText:pt,
processor:'scripts/php/upload.php'
});
});
我最近在Python中工作了很多,而且我的Javascript非常生疏。
答案 0 :(得分:0)
你几乎就在那里,你只需要设置你想要传递的参数的名称:
data.append("myParameterName", fileDate);
由于它是一个日期值,您可能希望将其转换为毫秒 - 自UNIX-epoch值(fileDate.valueOf()
)或ISO字符串(fileDate.toISOString()
)。