0

我在修改自动建议 jquery 脚本时遇到问题,我发现我正在尝试临时添加到我正在制作的 Web 应用程序中,在这个特定示例中,将从修改后的 wordnet 词典中选择英文单词。

这是演示:

http://documentcloud.github.com/visualsearch/#demo

现在这里是要修改并包含所有数据的代码:

<script type="text/javascript" charset="utf-8">
  $(document).ready(function() {
    window.visualSearch = VS.init({
      container  : $('#search_box_container'),
      query      : 'country: "South Africa" account: 5-samuel "U.S. State": California',
      // query      : '',
      unquotable : [
        'text',
        'account',
        'filter',
        'access'
      ],
      callbacks  : {
        search : function(query, searchCollection) {
          var $query = $('#search_query');
          $query.stop().animate({opacity : 1}, {duration: 300, queue: false});
          $query.html('<span class="raquo">&raquo;</span> You searched for: <b>' + searchCollection.serialize() + '</b>');
          clearTimeout(window.queryHideDelay);
          window.queryHideDelay = setTimeout(function() {
            $query.animate({
              opacity : 0
            }, {
              duration: 1000,
              queue: false
            });
          }, 2000);
        },
        valueMatches : function(category, searchTerm, callback) {
          switch (category) {
          case 'account':
              callback([
                { value: '1-amanda', label: 'Amanda' },
                { value: '2-aron',   label: 'Aron' },
                { value: '3-eric',   label: 'Eric' },
                { value: '4-jeremy', label: 'Jeremy' },
                { value: '5-samuel', label: 'Samuel' },
                { value: '6-scott',  label: 'Scott' }
              ]);
              break;
            case 'filter':
              callback(['published', 'unpublished', 'draft']);
              break;
            case 'access':
              callback(['public', 'private', 'protected']);
              break;
            case 'title':
              callback([
                'Pentagon Papers',
                'CoffeeScript Manual',
                'Laboratory for Object Oriented Thinking',
                'A Repository Grows in Brooklyn'
              ]);
              break;
            case 'city':
              callback([
                'Cleveland',
                'New York City',
                'Brooklyn',
                'Manhattan',
                'Queens',
                'The Bronx',
                'Staten Island',
                'San Francisco',
                'Los Angeles',
                'Seattle',
                'London',
                'Portland',
                'Chicago',
                'Boston'
              ])
              break;
            case 'U.S. State':
              callback([
                "Alabama", "Alaska", "Arizona", "Arkansas", "California",
                "Colorado", "Connecticut", "Delaware", "District of Columbia", "Florida",
                "Georgia", "Guam", "Hawaii", "Idaho", "Illinois",
                "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana",
                "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota",
                "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada",
                "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina",
                "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania",
                "Puerto Rico", "Rhode Island", "South Carolina", "South Dakota", "Tennessee",
                "Texas", "Utah", "Vermont", "Virginia", "Virgin Islands",
                "Washington", "West Virginia", "Wisconsin", "Wyoming"
              ]);
              break
            case 'country':
              callback([
                "China", "India", "United States", "Indonesia", "Brazil",
                "Pakistan", "Bangladesh", "Nigeria", "Russia", "Japan",
                "Mexico", "Philippines", "Vietnam", "Ethiopia", "Egypt",
                "Germany", "Turkey", "Iran", "Thailand", "D. R. of Congo",
                "France", "United Kingdom", "Italy", "Myanmar", "South Africa",
                "South Korea", "Colombia", "Ukraine", "Spain", "Tanzania",
                "Sudan", "Kenya", "Argentina", "Poland", "Algeria",
                "Canada", "Uganda", "Morocco", "Iraq", "Nepal",
                "Peru", "Afghanistan", "Venezuela", "Malaysia", "Uzbekistan",
                "Saudi Arabia", "Ghana", "Yemen", "North Korea", "Mozambique",
                "Taiwan", "Syria", "Ivory Coast", "Australia", "Romania",
                "Sri Lanka", "Madagascar", "Cameroon", "Angola", "Chile",
                "Netherlands", "Burkina Faso", "Niger", "Kazakhstan", "Malawi",
                "Cambodia", "Guatemala", "Ecuador", "Mali", "Zambia",
                "Senegal", "Zimbabwe", "Chad", "Cuba", "Greece",
                "Portugal", "Belgium", "Czech Republic", "Tunisia", "Guinea",
                "Rwanda", "Dominican Republic", "Haiti", "Bolivia", "Hungary",
                "Belarus", "Somalia", "Sweden", "Benin", "Azerbaijan",
                "Burundi", "Austria", "Honduras", "Switzerland", "Bulgaria",
                "Serbia", "Israel", "Tajikistan", "Hong Kong", "Papua New Guinea",
                "Togo", "Libya", "Jordan", "Paraguay", "Laos",
                "El Salvador", "Sierra Leone", "Nicaragua", "Kyrgyzstan", "Denmark",
                "Slovakia", "Finland", "Eritrea", "Turkmenistan"
              ], {preserveOrder: true});
              break;
          }
        },
        facetMatches : function(callback) {
          callback([
            'account', 'filter', 'access', 'title',
            { label: 'city',    category: 'location' },
            { label: 'address', category: 'location' },
            { label: 'country', category: 'location' },
            { label: 'U.S. State', category: 'location' },
          ]);
        }
      }
    });
  });
</script>

现在我试图修改它而不是从 jquery 脚本中获取所有数据,我想从同一服务器上的 python 脚本中获取数据,并使用该数据代替(因为我无法添加所有数据到一个文件,因为数据集很大)。但我基本上想做的是,几乎有两件事。

第一个在最后,它说“facetMatches”,它有一个术语列表(如帐户、过滤器等)和括号中的术语。我想将这些术语保留在括号中,但我希望其他术语不是“'account'、'filter'、'access'、'title'”,我希望它是一个包含数千个单词的列表,从 python 脚本访问,而不是直接写入。

第二个是,在“ValueaMatches”部分中,“Switch case”已经存在,每个单词都有一个输出列表,我希望每个单词都有一个结果列表,再次来自 python 脚本。我还希望 facetMatches 括号中的 4 个单词仍然有个别情况。我知道这可以很容易地用 if 语句完成,但我不知道如何从 python 脚本中获取数据。

另外,对于 python 脚本,我在每个脚本中有什么来输出正确的数据?我已经有了打印出我需要的所有东西的功能,只是不是我可能需要的格式。

4

1 回答 1

0

您可以向服务器询问 json 格式的数据列表。这可以通过创建一个 python 列表并使用json模块将其转换为 json 格式来完成。根据您的 python 版本,此模块将被调用simple_json,但在最新版本的 python 中,它只是json.

在您的 javascript中,您将jQuery.ajax()调用服务器并将响应读入您的列表变量。

于 2012-09-16T18:06:34.487 回答