2012-10-04 24 views
5

私はSolrとJQuery UIでHTMLオートコンプリートフォームを実装しようとしています。Solr JQueryオートコンプリートが自動完成しません

Solrのサーバークエリをログに記録し、Firebugのは、私はJSON配列を取得することを確認:

{"responseHeader":{"status":0,"QTime":3,"params":{"fl":"defaultCommonNameString","q":"defaultCommonName:angle","wt":"json"}},"response":{"numFound":42,"start":0,"docs":[{"defaultCommonNameString":["angle"]},{"defaultCommonNameString":["reporter un angle"]},{"defaultCommonNameString":["formule pour un angle"]},{"defaultCommonNameString":["angle droit"]},{"defaultCommonNameString":["angle au centre"]}, ...]}}} 

をしかし、このコードは、応答を表示しません。助けを

<link rel="stylesheet" type="text/css" href="css/demos.css" /> 
<script type="text/javascript" src="jquery/jquery-1.8.2.min.js"></script> 
<script type="text/javascript" src="jquery/jquery.ui.core.js"></script> 
<script type="text/javascript" src="jquery/jquery.ui.widget.js"></script> 
<script type="text/javascript" src="jquery/jquery.ui.position.js"></script> 
<script type="text/javascript" src="jquery/jquery.ui.autocomplete.js"></script> 
<script> 
$(function() { 
    $("#autosearch").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
      url: "http://localhost:8080/solr/select", 
      data: { 
       q: "defaultCommonName:"+request.term, 
     wt:"json", 
     fl: "defaultCommonNameString", 
      }, 
      dataType: "json", 
      type: "GET", 

      success: function(data) { 
       data=parse(); 
       function parse(){ 
       var parsedQueries=[]; 
        for(var i=0;i<data.response.docs.length;i++){ 
         parsedQueries[i]=data.response.docs[i].Query; 
        } 
        return parsedQueries; 
       } 

       response($.map(data.response.docs, function(item) { 
        return { 
         label: item, 
         value: item 
        }; 
      })); 
      } 
      }); 
     }, 
     minLength: 1 
     }); 
    }); 
</SCRIPT> 
</head> 
<body> 
<label for="autosearch">Search Here : </label> 
<input id="autosearch"/> 
</body> 

感謝を

+0

data.response.docs [i]とは何か.Queryを参照してください。それは代わりにdata.response.docs [i] .defaultCommonNameStringですか? –

+0

はいこれはdata.response.docs [i] .defaultCommonNameStringですが、結果は変わりません:-( – doumeasse38

+0

これを試してください:dataType: "jsonp"; minLength:2のほうが効率的かもしれませんが、それはあなたの必要条件に依存します –

答えて

1

私は、コードの上にその作業罰金を使用していますが、サーバのIPアドレスとポートは、ページのソースに直接開いているこの情報を暗号化するためにどのような方法があります。

+0

次に、現在のURLを使用してリダイレクトします。 var url = window.location.protocol + '//' + window.location.host; ... $。ajax ({ url:url + '/solr/.../select'、 ... – doumeasse38

6

多くのありがとうD_K、それはうまく動作します!!!

コード:

$(function() { 
    $("#autosearch").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
      url: "http://localhost:8080/solr/select", 
      data: { 
       q: "defaultCommonName:"+request.term, 
       fl: "defaultCommonNameString", 
       wt: 'json', 
      }, 
      dataType: "jsonp", 
      jsonp: 'json.wrf', 

      success: function(data) { 
       response($.map(data.response.docs, function(item) { 
        return { 
         label: item.defaultCommonNameString, 
         value: item.defaultCommonNameString, 
        }; 
      })); 
      } 
      }); 
     }, 
     minLength: 1 
     }); 
    }); 
関連する問題