只警告从文件输入中选择的文件名
我有这个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');
,并在现有-filenames.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 />
你不是应该提醒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);
}
这是否有意义?我们保留一个正在运行的我们添加的文件的字符串,并在最后提醒他们。你可以在它们之间或空格之间加上逗号,或者你想要的任何东西。
警报fname
代替data
和删除return false;
if(~data.indexOf(fname)){
// only alert selected file names
alert("these files already exist:" + fname);
}
但这只会提醒1个文件名可能有多个文件被选中,两个都在数据库中 – user2014429 2013-03-26 20:49:27
从代码中移除'return false' – 2013-03-26 20:50:42
有疑问时,增加更多的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);
}
});
});
});
我不认为你会从'var文件= $得到任何东西( '#file')[0];'你应该提醒fname检查它是什么。 – jmm 2013-03-26 22:12:20