1

プロジェクトの基礎として、Solr の AJAX の JSON 出力の例を使用しています。ただし、フォームにドロップダウン メニューを追加し、パラメータにファセットを追加することで変更を加えました。

パラメータ:

function getstandardargs() {
    var params = [
        'wt=json'
        ,'facet=true'
        ,'facet.field=brand1'
        ,'facet.field=brand2'
        ,'facet.field=brand3'
        ,'facet.field=brand4'
        ,'facet.limit=2'
        ]; 

ドロップダウンメニュー:

<form name="f1" onsubmit='xmlhttpPost("/solr/select"); return false;'>
  <p>query: <input name="query" type="text">  
  <select id="Entity">
  <option value="brand1">Universal</option>
  <option value="brand2">Paramount</option>
  <option value="brand3">Fox</option>
  <option value="brand4">Sony</option>
</select> 
  <input value="Go" type="submit"></p>

次のように、ドロップダウン値をファセット クエリ結果に追加しようとしています。

var rsp = eval("("+str+")");
var c=document.getElementById("Entity");
cat=c.options[c.selectedIndex].value;
var output=rsp.facet_counts.facet_fields;
html += "Entity: " + output+'.'+cat;

私のファセット応答は、 Entity: [object Object].Universalを返します。Solr が実際に適切なファセット値を返すことができるように、応答クエリにドロップダウン値を正しく追加するにはどうすればよいですか? どうもありがとう。

4

1 に答える 1

2

次の理由により、ajaxリクエストにライブラリを使用することで、この問題の複雑さを確実に軽減できます。

  • それらを選択オプションに変えるために必要なdom操作を簡単に行うことができます
  • 実際のjsonオブジェクトを取り戻すことを期待して、リクエストを任意に送信できます
  • あなたはの使用を避けることができますeval

また、応答が「エンティティ:[オブジェクトオブジェクト] .Universal」であるとconsole.log( output );言ったので、オブジェクトで返されるものを正式に教えてください。文字列をオブジェクトと連結することにより、出力オブジェクトを台無しにしている可能性があります

それが実際にオブジェクトである場合は、次のように繰り返しアクセスできます。

for(var x in rsp.facet_counts.facet_fields) {
    //rsp.facet_counts.facet_fields[x]
}
于 2012-05-10T14:55:56.043 に答える