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

既然你说你的回应是“实体:[object Object].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 回答