我需要能够在我的网络应用程序的搜索文本字段中输入查询,并从具有特定文本的每个文档返回突出显示的结果。问题是,我无法得到显示所有文档的响应,它只显示一个。
假设我有4个ID为doc1,doc2,doc3,doc4等的文档。如何让代码循环显示来自所有4个文档的内容,而不仅仅是一个。我已经将doc2硬编码到我的程序中以使其工作,我在循环中遇到了麻烦。
Ext.data.JsonP.request({
url: 'http://localhost:8983/solr/collection1/select?q='+searchValue+'&wt=json&indent=true&hl=true&hl.fl=content&hl.simple.pre=%3Cem%3E&hl.simple.post=%3C%2Fem%3E',
callbackKey: "json.wrf",
success: function( res, req ) {
for (i=0; i<res.response.numFound; i++) {
var docId = res.response.docs[i].id;
//This returns all ids. ex. doc1, doc2 etc.
alert(docId);
htmlCode += "<h4>Your search term: "+searchValue+"</h4><p>"+res.highlighting.doc2.content+"</p>";
}
//Print code below -- irrelevant for the question.
}
答案 0 :(得分:0)
您可以尝试直接迭代res.response.docs
集合。
e.g。 JQUery JSON Example
$.each(data.response.docs, function(key, element){
console.log(element.id);
});
答案 1 :(得分:0)
从这篇文章中得出结论:How do I access properties of a javascript object if I don't know the names?
我将它包含在我的for循环中以使其正常工作:
var hl = res.highlighting;
var content="";
Object.keys(hl).forEach(function (key) {
if(key == docId) {
content = hl[key].content;
}
});