Javascript 使用jquery调用从SOLR检索结果
我正在使用jquery从SOLR获得响应。当我使用下面的代码时,我得到的错误是Typeerror:data is null 查看firebug中的代码时,数据函数上的中的数据为空。我想我在Solr URL中遗漏了一些东西。我使用的URL是%3A&version=2.2&start=0&rows=10&indent=on&wt=json。 你能看一下我的代码,并建议我代码中的URL样式吗Javascript 使用jquery调用从SOLR检索结果,javascript,jquery,solr,Javascript,Jquery,Solr,我正在使用jquery从SOLR获得响应。当我使用下面的代码时,我得到的错误是Typeerror:data is null 查看firebug中的代码时,数据函数上的中的数据为空。我想我在Solr URL中遗漏了一些东西。我使用的URL是%3A&version=2.2&start=0&rows=10&indent=on&wt=json。 你能看一下我的代码,并建议我代码中的URL样式吗 <html> <head> <title>Solr Search&
<html>
<head>
<title>Solr Search</title>
</head>
<body>
<h3>Solr Search</h3>
Query: <input id="query" />
<button id="search">Search</button>
<hr/>
<div id="results">
</div>
</body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
function on_data(data) {
$('#results').empty();
var docs = data.response.docs;
$.each(docs, function(i, item) {
$('#results').prepend($('<div>' + item.name + '</div>'));
});
var total = 'Found ' + docs.length + ' results';
$('#results').prepend('<div>' + total + '</div>');
}
function on_search() {
var query = $('#query').val();
if (query.length == 0) {
return;
}
var url='http://xxxx.xxx.xxxx.xxx/xxx_xxx/core0/selectcore0/select/?q='+query+'&version=2.2&start=0&rows=50&indent=on&wt=json';
$.getJSON(url, on_data);
}
function on_ready() {
$('#search').click(on_search);
/* Hook enter to search */
$('body').keypress(function(e) {
if (e.keyCode == '13') {
on_search();
}
});
}
$(document).ready(on_ready);
</script>
Solr搜索
单色搜索
查询:
搜寻
_数据上的函数(数据){
$(“#结果”).empty();
var docs=data.response.docs;
$。每个(文档、功能(i、项目){
$('#results')。前置($(''+item.name+'');
});
var total='Found'+docs.length+'results';
$(“#结果”)。前置(“”+总计+“”);
}
_search()上的函数{
var query=$('#query').val();
if(query.length==0){
返回;
}
var url='1〕http://xxxx.xxx.xxxx.xxx/xxx_xxx/core0/selectcore0/select/?q=“+query+”&version=2.2&start=0&rows=50&indent=on&wt=json';
$.getJSON(url,在_数据上);
}
_ready()上的函数{
$(“#搜索”)。单击(在#搜索上);
/*钩住输入进行搜索*/
$('body')。按键(功能(e){
如果(e.keyCode=='13'){
关于搜索();
}
});
}
$(文件).ready(on_ready);
由于您使用的是$.getJSON,您可能需要向查询中添加&wt=json 因此,您的查询应该是: 默认情况下,Solr提供XML响应。您需要通过添加&wt=JSON来指定是否需要JSON响应
模式详细信息:以下是代码的工作版本和更改列表: 1)添加了wrf:在JSON响应周围添加了一个包装函数,在AJAX中使用动态脚本标记指定JavaScript回调函数非常有用 2)添加了回调:由于JavaScript的跨域安全限制,需要使用JSONP而不是普通的JSON请求
<html>
<head>
<title>Solr Search</title>
</head>
<body>
<h3>Solr Search</h3>
Query: <input id="query" />
<button id="search">Search</button>
<hr/>
<div id="results">
</div>
</body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
function on_data(data) {
$('#results').empty();
var docs = data.response.docs;
$.each(docs, function(i, item) {
$('#results').prepend($('<div>' + item.name + '</div>'));
});
var total = 'Found ' + docs.length + ' results';
$('#results').prepend('<div>' + total + '</div>');
}
function on_search() {
var query = $('#query').val();
if (query.length == 0) {
return;
}
var url='http://xxxx.xxx.xxxx.xxx/xxx_xxx/core0/selectcore0/select/?q='+query+'&version=2.2&start=0&rows=50&indent=on&wt=json&callback=?&json.wrf=on_data';
$.getJSON(url);
}
function on_ready() {
$('#search').click(on_search);
/* Hook enter to search */
$('body').keypress(function(e) {
if (e.keyCode == '13') {
on_search();
}
});
}
$(document).ready(on_ready);
</script>
单色搜索
单色搜索
查询:
搜寻
_数据上的函数(数据){
$(“#结果”).empty();
var docs=data.response.docs;
$。每个(文档、功能(i、项目){
$('#results')。前置($(''+item.name+'');
});
var total='Found'+docs.length+'results';
$(“#结果”)。前置(“”+总计+“”);
}
_search()上的函数{
var query=$('#query').val();
if(query.length==0){
返回;
}
var url='1〕http://xxxx.xxx.xxxx.xxx/xxx_xxx/core0/selectcore0/select/?q=“+query+”&version=2.2&start=0&rows=50&indent=on&wt=json&callback=?&json.wrf=on_data”;
$.getJSON(url);
}
_ready()上的函数{
$(“#搜索”)。单击(在#搜索上);
/*钩住输入进行搜索*/
$('body')。按键(功能(e){
如果(e.keyCode=='13'){
关于搜索();
}
});
}
$(文件).ready(on_ready);
我已经安装了solr 5.2.1:item.name,不再提供函数on_data。我使用了item.id,它成功了。ChitKara感谢您的回答。即使在使用json输出后,我也会遇到同样的错误。你能再研究一下这个问题吗?你的搜索查询是什么?我在你上面的问题中看到,你在做q=%3A,我认为这是不正确的。如果要提取所有结果,它应该是:q=%2A%3A%2A或q=*:*我使用的搜索查询是q=*:*非常感谢Chitkara。代码正在运行,没有任何错误,但结果显示为未定义。在第20行,我们正在打印item.name,这意味着name应该是Solr索引中的一个字段,这可能不是真的。我建议将其更改为item.id,并查看是否打印所有结果的id。