2012-10-04 33 views
5

Solr ve JQuery UI ile bir HTML otomatik tamamlama formu uygulamaya çalışıyorum.Solr JQuery otomatik tamamlama otomatik tamamlanmıyor

solr sunucusu bir json dizi olsun sorgu ve Kundakçı Onayla log

:

{"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"]}, ...]}}} 

Ama bu kod yanıt göstermez: Yardım için

<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> 

Teşekkür

+0

data.response.docs [i] .Query ne anlama gelir? Bunun yerine data.response.docs [i] .defaultCommonNameString mi? –

+0

evet bu data.response.docs [i] .defaultCommonNameString ancak sonucu değiştirmez :-( – doumeasse38

+0

bunu deneyin: dataType: "jsonp"; ayrıca minLength: 2 daha verimli olabilir, ancak gereksinimlerinize bağlı olarak –

cevap

1

bu bilgileri şifrelemek için herhangi bir yolu yoktur Sayfa kaynağını doğrudan açıktır.

+0

isteği yönlendirmek için apache vekil kullanabilirsiniz Sonra sadece şimdiki url kullanmak yönlendirmek için:.. var url = window.location.protocol + '//' + window.location.host; ... $ ajax ({ URL: URL + '/solr/.../select', ... – doumeasse38

6

Çok teşekkürler D_K, bu iyi çalışıyor!

kodu: Ben kodunun üzerinde onun çalışma ince ancak sunucu ip ve port kullanıyorum

$(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 
     }); 
    });