1

我完全新來javaScript和所有這些東西。 我需要實現自動完成,所以我從簡單的例子開始。下面的代碼:與jQuery和JSON自動完成

<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>jQuery UI Autocomplete</title> 
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
    <link rel="stylesheet" href="/resources/demos/style.css" /> 
    <script type="text/javascript"> 
    $(function() { 
     $("#tags").autocomplete({ 
      source: function(request, response) { 
       $.ajax({ 
        url: "http://myUrl.com/suggest.json?term=harry", 
        success: function(data) { 
        response(data.suggestions); 
        } 
       }); 
       }, 
     }); 
     }); 
     </script> 
</head> 
<body> 
<div class="ui-widget"> 
    <label for="tags">Tags: </label> 
    <input id="tags" /> 
</div> 
</body> 
</html> 

這是JSON我在劇本中提到的網址獲得:

{ 
    "term" : "harry", 
    "count" : 4, 
    "suggestions" : 
    [ 
     "harry potter", 
     "harry l.", 
     "harry a.", 
     "harry leon" 
    ] 
} 

似乎是確定,但我沒有得到一個自動完成選項。可能是什麼問題?

回答

0

我找到了問題的根源。他們中很少有人可能會對其他人感興趣。

第一個問題是跨域呼叫限制。要允許跨域調用,必須在返回的json上實現回調函數。

其次它沒有在整個項目中工作後,我把它作爲獨立的HTML工作。問題是在我的* .jsp文件之一中覆蓋.menu函數。從谷歌搜索itm我找到解決方案(不是我猜的最好但仍然有效)重命名jquery.js文件中的.menu函數。這些操作後,一切正常。

0

您的代碼工作正常。有一個問題我看到的是},}},不會在IE

工作

jsFiddle

+0

它工作正常,如果您在同一腳本中定義建議。但這不是我的情況 –