这是一个线程问题吗?

时间:2016-03-07 06:14:25

标签: jquery python multithreading each cherrypy

我使用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>");
        }
      });
    });
  };

我的代码存在以下问题:

  1. 有四个不同的div包含四个不同的search_path信息,使用$.each()函数对后端服务进行AJAX调用。在点击事件中,应该有四个不同的调用,但现在只有第一个div真正起作用。
  2. 实际上,$ .each()成功地对所有四个div进行了调用,并且可以成功找到后端的服务,返回状态代码200,但只有第一个div实际上得到了正确的结果,< strong>其他三个总是得到一个空数组。
  3. 登录后端显示问题出在后端。 &#39;文件&#39;第一个调用的变量返回右数组,而其他三个返回空数组。

0 个答案:

没有答案