带有Typehead / Bloodhound的Apache solr

时间:2016-03-25 00:30:22

标签: ajax solr typeahead.js twitter-typeahead bloodhound

我正在使用带有Typhead.js的Apache solr在我的应用程序中进行搜索。我的问题是,当从客户端上的AJAX请求调用我的solr API时,我一直收到CORS错误。我正在设置dataType:'jsonp',但它仍然给我CORS错误。谁能看到我做错了什么?我将dataType设置在错误的位置吗?

我正在使用typeahead版本0.11.1

错误:

请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost”访问。

这是我的代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Search</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
    <script type="text/javascript" src="typeahead.min.js"></script>

</head>

<body>
    <input class="typeahead">

    <script type="text/javascript">
    var things = new Bloodhound({

        datumTokenizer: function(datum) {
            return Bloodhound.tokenizers.whitespace(datum.value);
        },

        queryTokenizer: Bloodhound.tokenizers.whitespace,

        remote: {
            wildcard: '%QUERY',

            url: 'http://localhost:8983/solr/MYCORE/select?q=name:%QUERY',

            ajax: {
                dataType: 'jsonp',

                data: {
                    'wt': 'json',

                },

                jsonp: 'json.wrf'
            },

            transform: function(response) {
                return $.map(response, function(value, key) {
                    return {
                        value: value.name
                    };
                });
            }
        }
    });

    // Instantiate Typeahead
    $('.typeahead').typeahead(null, {
        hint: true,
        display: 'value',
        source: things
    });
    </script>
</body>

</html>

当我手动发出AJAX请求时,它可以正常工作。我似乎无法让它与Bloodhound合作。

$.ajax({
    url: URL_TO_SOLR,
    success: function(data) {

        var docs = JSON.stringify(data.response.docs);
        var jsonData = JSON.parse(docs);

        response($.map(jsonData, function(value, key) {
            return {
                label: value.name
            }
        }));
    },
    dataType: 'jsonp',
    jsonp: 'json.wrf'
});

这很好地通过我的solr服务器。

0 个答案:

没有答案