只警告从文件输入中选择的文件名

问题描述:

我有这个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 /> 
+0

我不认为你会从'var文件= $得到任何东西( '#file')[0];'你应该提醒fname检查它是什么。 – jmm 2013-03-26 22:12:20

你不是应该提醒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); 
    } 
+0

但这只会提醒1个文件名可能有多个文件被选中,两个都在数据库中 – user2014429 2013-03-26 20:49:27

+0

从代码中移除'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); 
      } 
     }); 
    }); 
});