我使用CherryPy 5.0.1作为我的服务器端框架。
以下代码对本地磁盘的文件执行搜索。它搜索由前端AJAX调用提供的某些字符串。
import cherrypy
import os
import os.path
import json
def searchForFiles(search_path, base_filename):
directory = os.path.abspath(search_path)
files = []
for f in os.listdir(directory):
if os.path.isfile(f):
files.append(f)
hit = []
for f in files:
if fnmatch.fnmatch(f, '*' + base_filename + '*'):
hit.append(f)
hit = json.dumps(hit)
return hit
class GUI_DB_Interface:
# whatever codes here......
@cherrypy.expose
def searchForFiles(self, search_path, base_filename):
return searchForFiles(search_path, base_filename)
前端代码:
var searchSimilarFiles = function(event, filename_base) {
var $uls = $('div#overview_box ul.existing_files');
var current_input = $('input#primary_input').val();
$.each($uls, function(index, ul) {
var path_name = $(ul).siblings('div.folder_info')
.find('div.path_name').data("path");
$.post('searchForFiles', {
'search_path': path_name,
'base_filename': current_input
}, function(databack) {
var lis = JSON.parse(databack);
$(ul).empty();
console.log(lis);
for (l in lis) {
$(ul).append("<li>" + lis[l] + "</li>");
}
});
});
};
我的代码存在以下问题:
search_path
信息,使用$.each()
函数对后端服务进行AJAX调用。在点击事件中,应该有四个不同的调用,但现在只有第一个div真正起作用。