2012-09-16 33 views
0

我無法修改自動提示的jquery腳本我發現我想暫時添加到一個web應用程序我正在做這個,在這個具體的例子中將選擇英文單詞從修改的wordnet字典。修改jquery自動建議腳本以使用python

以下是演示:

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」它有一個術語列表(如帳戶,過濾器等)和括號中的術語。我想保留括號中的條款,但我希望其他條款不是「賬戶」,「過濾」,「訪問」,「標題」,「我希望它是成千上萬的單詞列表,從一個python腳本訪問,而不是剛剛寫入。

第二個是,在'ValueaMatches'部分,其中「開關情況」已存在,每個單詞的輸出列表,我希望每個單詞有一個結果列表,再次來自python腳本。我還想讓facetMatches的括號中的4個單詞仍然有個別情況。我知道使用if語句很容易完成,但我不知道如何從python腳本獲取數據。

此外,對於python腳本,我會在每個腳本中輸出正確的數據?我已經有了能夠打印出我需要的所有東西的功能,只是不是我可能需要的格式。

+0

[Python可以以JSON編碼格式吐出數據](http://www.doughellmann.com/PyMOTW/json/) – Ohgodwhy

回答

0

您可以向服務器詢問json格式的數據列表。這可以通過使用json模塊創建一個python列表並將其轉換爲json格式來完成。根據你的python版本,這個模塊將被稱爲simple_json,但在Python的最新版本中,它只是json

在您的javascript中,您將觸發jQuery.ajax()調用服務器並將響應讀入您的列表變量中。

+0

所以我會把jQuery.ajax()放在回調函數裏面(...這裏。 ..)? – bs7280

+0

我在這段代碼中找不到'callback'的實現,所以我不能判斷它應該做什麼。我認爲ajax調用應該在valueMatch中。 –