我有这个ajax调用,它检查数据库中是否已存在多文件输入的选定文件名。如果他们这样做,它会发出一条消息告诉他们。问题是我只能从结果循环中提醒所有文件名。如何编辑它以便它只警告所选的文件名?谢谢。
var file = $('#file')[0];
$.get('existing-filenames.php', function(data){
for (var i=0; i<file.files.length; i++) {
var fname = file.files[i].name;
if(~data.indexOf(fname)){
// only alert selected file names
alert("these files already exist:" + data);
return false;
}
}
},'json');
和现有文件名.php
$allfiles = $db->query("SELECT filename FROM files WHERE email = '$_SESSION[email]'");
$result = [];
while( $files = $allfiles ->fetch_assoc() ){
$result[] = $files['filename'];
}
echo json_encode($result);
和html
<input name = "file[]" type = "file" id = "file" multiple />
答案 0 :(得分:1)
如有疑问,请添加更多jQuery:
$('#file').on('change', function () {
var self = this;
$.get('existing-filenames.php', function (data) {
$.each(self.files, function () {
if (data.indexOf(this.name) != -1) {
alert("these files already exist:" + this.name);
}
});
});
});
答案 1 :(得分:0)
你不应该警告fname而不是数据吗?
以下是您的工作方式:
myfiles = '';
for(var i = 0; i < file.files.length; i++)
{
if(~data.indexOf(fname)){
myfiles += fname;
}
}
if(myfiles !== ''){
alert("these files already exist:" + myfiles);
}
这有意义吗?我们保留了一系列正在运行的文件,我们会在最后提醒他们。您可以在它们之间或空格或任何您想要的地方添加逗号。
答案 2 :(得分:0)
提醒fname
代替data
并删除return false;
if(~data.indexOf(fname)){
// only alert selected file names
alert("these files already exist:" + fname);
}