Я попытался сделать панель поиска для моего текущего проекта.
Вот текущий HTML:
<input type="text" id="searchbar"/>
CSS пока что не важно...
Я дал возможность находить файлы/папки с сервера:
Если вы нажмете enter, JavaScript отправит $.post()
Вот мой Javascript:
$.post( "files/openFolder.php",{folder : $searchtext}, function() {
})
.success(function(data) {
if(data != "") {
if(data.indexOf("folder:") > -1){ //contains folders..!
foundedFolders = data;
myfolders = foundedFolders.split(/[folder:&]/);
myfolders = cleanArray(myfolders);
generateFolderBoxes(myfolders);
folderBoxSettings();
}else if(data.indexOf("file:") > -1){ // contains files..!
foundedFiles = data;
myfiles = foundedFiles.split(/[file:&]/);
myfiles = cleanArray(myfiles); //cleans the Array from empty Strings.
generateFileBoxes(myfiles);
fileBoxSettings();
}
}
})
.fail(function() {
alert("Sorry doesn't worked, try later again.");
});
Моя проблема здесь:
myfolders = foundedFolders.split(/[folder:&]/);
а также
myfiles = foundedFiles.split(/[file:&]/);
PHP-выход:
"folder:****&file:*****&file:*****&"
Я прочитал этот stackoverflow, чтобы получить имена папок или файл: Получить подстроку между двумя символами с помощью javascript
Выходы Reg-Expression:
["such", " - Kop", ".txt", "such", ".txt", "t", "st - Kop", ".txt", "t", "st.txt"]
Но нормально это должно быть:
["suche - Kopie.txt","suche.txt","test - Kopie.txt","test.txt"]
Эти "имена файлов" необходимы для их отображения.
Спасибо, что помогли: D
Проблема, с которой вы сталкиваетесь, - это регулярное выражение в функции split.
В частности, классы символов содержат список отдельных символов.
Таким образом, [folder:&]
действительно соответствует одному символу из набора символов 'f','o','l','d','e','r',':','&'
Чтобы разделить на '&folder:'
или '&'
или ':'
это должно быть что-то вроде этого
myfolders = foundedFolders.split(/&?folder:|[&:]+/);
Аналогично, для '&file:'
или '&'
или ':'
myfiles = foundedFiles.split(/&?file:|[&:]+/);