7

Apache Solr 要求发送到其端点的 GET 参数之一是重复的名称:

facet.range=price&facet.range=age

此处的文档:

http://wiki.apache.org/solr/SimpleFacetParameters#facet.range

在 jQuery 中,我怎样才能包含该查询字符串参数 ( facet.range) 两次?我无法使用重复键创建对象,但这与我需要做的事情一致:

context = {
    'facet.range': 'price',
    'facet.range': 'age', // This will be the only element in this dictionary as the key names are the same
}

$.ajax({
    type: "get",
    url: 'http://127.0.0.1:8983/solr/select',
    dataType:"jsonp",
    contentTypeString: 'application/json',
    jsonp:"json.wrf",
    data: context,
    success:function (data) {
        ...
    }
});
4

5 回答 5

13

'facet.range': ['price', 'age']在您的 params 对象中使用并traditional在 ajax 调用中设置为 true 以强制执行参数的“传统”序列化,foo=1&foo=2而不是foo[]=1&foo[]=2.

于 2012-09-21T14:35:24.657 回答
3

jQuery 内部$.param用于序列化表单,因此您也可以这样做:

data = $.param(
    { name: 'facet.range', value: 'price' }, 
    { name: 'facet.range', value: 'age' }
)
于 2012-09-21T14:34:56.370 回答
2

您可以手动将参数添加到 url。

   $.ajax({
       type: "get",
       url: 'http://127.0.0.1:8983/solr/select?facet.range=price&facet.range=age', // Add other parameters in the url
       dataType:"jsonp",
       contentTypeString: 'application/json',
       jsonp:"json.wrf",
       success:function (data) {
           ...
       }
   });
于 2012-09-21T14:26:26.110 回答
0

我认为解决这个问题的唯一方法是将数据“硬编码”为查询字符串参数,而不是传递数据

$.ajax({
    type: "get",
    url: 'http://127.0.0.1:8983/solr/select?facet.range=price&facet.range=age',
    dataType:"jsonp",
    contentTypeString: 'application/json',
    jsonp:"json.wrf",
    data: null,
    success:function (data) {
        ...
    }
});
于 2012-09-21T14:26:27.757 回答
-1

我不熟悉 Apache Solr,但我知道您可以重新创建 URL 以传递参数

$.ajax({
    type: "get",
    url: 'http://127.0.0.1:8983/solr/select?'+ "facet.range=price&facet.range=age",
    success:function (data) {
        ...
    }
});
于 2012-09-21T14:29:56.207 回答