2013-03-26 43 views
0

我有這個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

回答

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); 
} 

這是否有意義?我們保留一個正在運行的我們添加的文件的字符串,並在最後提醒他們。你可以在它們之間或空格之間加上逗號,或者你想要的任何東西。

0

警報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

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); 
      } 
     }); 
    }); 
}); 
相關問題