使用 $.ajax 获取 Sol:r JSON

发布于 2024-12-04 22:22:48 字数 828 浏览 0 评论 0原文

我想从 sol:r 请求获取 JSON 结果,但总是收到错误。

代码如下:

$.ajax({
        url: 'http://' + url + '/solr/select',
        type: 'POST',
        data: 'indent=on&version=2.2&q=name:pzn&start=0&rows=10&fl=name&qt=&wt=json',
        dataType: 'jsonp',
        success: function (data, textStatus, xhr) {
            var str = eval("("+data+")");
            $("#results").html('raw JSON: ' + str);
            },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(textStatus + ": " + errorThrown);
            }
    });

在我的日志中,我可以看到该请求已由 sol:r 处理并发送回 json。 但我得到的只是一个错误,如“ jQuery15204679577243202049_1316167632724 未被调用”。不是很有帮助,但 Firebug 控制台说,响应中有一个无效标签,并且只向我显示第一个 JSON 行 '"responseHeader":{'

但我得到了整个 JSON。唯一不起作用的是,他就是不给我:D

我该如何解决这个问题?

i want to fetch my JSON result from a sol:r request, but I always get an error back.

Heres the code:

$.ajax({
        url: 'http://' + url + '/solr/select',
        type: 'POST',
        data: 'indent=on&version=2.2&q=name:pzn&start=0&rows=10&fl=name&qt=&wt=json',
        dataType: 'jsonp',
        success: function (data, textStatus, xhr) {
            var str = eval("("+data+")");
            $("#results").html('raw JSON: ' + str);
            },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(textStatus + ": " + errorThrown);
            }
    });

In my Log I can see, that the request has been handled by sol:r and sent an json back.
But all I get is an error like ' jQuery15204679577243202049_1316167632724 was not called'. Not very helpful but Firebug console says, that there's a invalid label in the response and just shows me the first JSON line '"responseHeader":{'

But I get the whole JSON back. The only thing that doesn't work, he just won't give it to me :D

How do I solve this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鹿! 2024-12-11 22:22:48

请查看这篇博文SOLR with JSONP with jQuery.作者展示了使用 jQuery Ajax 调用 Solr 的几种不同方法。

更新:如何处理结果..

您可以执行以下操作来访问生成的原始 JSON 对象...

$.getJSON(mySolrUrl, function(data) {
// data is bound to the result json
   alert("Found " + data.response.numFound + " documents.");
   alert("First document name field is: " + data.response.docs[0].name);
});

另外还要再次查看您的问题,我不确定您想要/需要做什么ajax POST 与 ajax GET 应该返回相同的结果。我刚刚添加的示例仅执行 ajax GET。

Please look at this blog post SOLR with JSONP with jQuery.The author shows a couple of different ways to call Solr with jQuery Ajax.

Update: How to handle result..

You can do the following to get access to the resulting raw JSON object...

$.getJSON(mySolrUrl, function(data) {
// data is bound to the result json
   alert("Found " + data.response.numFound + " documents.");
   alert("First document name field is: " + data.response.docs[0].name);
});

Plus also looking at your question again, I am not sure you want/need to do an ajax POST, as an ajax GET should return the same results. And the example I just added is only doing an ajax GET.

一口甜 2024-12-11 22:22:48

您可以直接使用 getJson 函数从 Solr 获取 json 响应。
确保添加 json.wrf=?参数传入请求URL,因此调用success方法。

更多 @ http://wiki.apache.org/solr/SolJSON#JSON_specific_parameters

You can use the getJson function directly to get the json response from Solr.
Be sure you add the json.wrf=? parameter to the request URL, so the success method is called.

More @ http://wiki.apache.org/solr/SolJSON#JSON_specific_parameters

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文