jQuery自动完成未绘制结果
jQuery autocomplete not drawing results
首先,我对JS一点经验都没有,所以我不太了解它。预先警告:-)
我正在写一个自动完成菜单,它是从一个呼叫到一个网络服务来填充的。此web服务将返回不同类型的元素(人员、部门、项目等):
{"results": [{"url": "/en/staff/1/", "text": "Santa Klaus", "first_name": "Santa", "last_name": "Klaus", "avatar": "/static/img/generic-avatar.png"},{"url": "/en/projects/1/", "text": "Research on algae", "by": "some university"},{"url": "/en/department/1/", "text": "department A"}]}
我想把它们呈现为下一个例子:
<form id="search" action="/search/" style="opacity: 1;">
<div class="ui-widget">
<input type="search" name="search field q" placeholder="Søk etter personer, prosjekter, avdeling, forskningsfelt ..." class="autocomplete-me">
</div>
<div id="autocomplete" class="">
<h2>People</h2>
<ul>
<li>
<a href="/profiles/profilek/" title="">
<img src="/img/avatar-santa-klaus.jpg">
<h3>Santa Klaus</h3>
<h4>Brings presents during Christmas</h4>
</a>
</li>
<li>
<a href="/profiles/profileJ" title="">
<img src="/img/generic-avatar.png">
<h3>John Doe</h3>
<h4>Unknown</h4>
</a>
</li>
</ul>
<a class="see-all" href="/profiles/all/" title="">all people...</a>
<h2>Projects</h2>
<ul>
<li>
<a href="/project/pr1" title="">
<h3>Research on algae ...</h3>
<h4>Some university</h4>
</a>
</li>
<li>
<a href="/project/pr2" title="">
<h3>Research on something else ...</h3>
<h4>Other university</h4>
</a>
</li>
</ul>
<a class="see-all" href="/projects/all/" title="">All projects...</a>
<h2>Departments</h2>
<ul>
<li>
<a href="/departments/departmentA" title="">
<h3>Department A</h3>
</a>
</li>
</ul>
</div>
<input type="submit" name="submit search" value=Search">
</form>
我的第一个问题是,由于我需要以单独的方式显示这些对象:我应该从web服务返回几个集合而不是一个集合吗?类似这样的东西:
{"people": [{"url": "/en/staff/1/", "text": "Santa Klaus", "first_name": "Santa", "last_name": "Klaus", "avatar": "/static/img/generic-avatar.png"}],"projects": [{"url": "/en/projects/1/", "text": "Research on algae", "by": "some university"}],"departments":[{"url": "/en/department/1/", "text": "department A"}]}
另一方面,我的javascript代码不起作用。它向服务器发出请求并接收集合,但不绘制下拉菜单。
$(function() {
$( ".autocomplete-me" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: '/autocomplete',
minLength: 4,
dataType: "json",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
q: request.term
},
success: function(response) {
response(
$.map( response.results,
function(item) {
return {
label: item.text,
value: item.url
}
}
)
);
}
});
}
});
});
结果应该呈现到"autocomplete"div中,但我不知道如何呈现。你们能帮我吗?谢谢
最后我"扔掉"了.autocomplete()jquery ui方法。我使用了$.getJSON方法+嵌套的$.each调用,这更灵活。然后绘制我的html代码是一件容易的事情。
$(".autocomplete-me").bind('keyup mouseup change', function(e){
var search_terms = $(".autocomplete-me")[0].value
if (search_terms.length>3){
var autocompleteUrl = '/autocomplete/';
$.getJSON(autocompleteUrl, {
format:'json',
q: search_terms
}).done(function(data){
if (data.results.length > 0) {
console.log(data.results);
var suggestions = '';
$.each(data.results, function(key, val){
suggestions += '<h2>' + val.category + '</h2>';
suggestions += '<ul>';
$.each(val.items, function(item_key, item_val){
// more stuff...
});
suggestions += '</ul>';
suggestions += '<a class="see-all" href="';
suggestions += val.url[1];
suggestions += '">';
suggestions += val.url[0];
suggestions += '</a>';
});
$('div#autocomplete').html(suggestions);
$('div#autocomplete').show();
}
});
}
});
相关文章:
- 奇怪的Javascript结果
- D3在一个调用中绘制不同的SVG形状,没有可见性
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 有没有一个javascript图形绘制库可以进行气球树布局
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 使用相同的数据集绘制各种符号
- 使用onclick绘制SVG路径
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 在谷歌地图上绘制位置数据库
- 用chart.js绘制条形图
- “可绘制地图”设置地图选项“纬度-经度”
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- 多维数据集网格未在指定的分区中绘制
- jQuery自动完成未绘制结果
- 如何将前一个函数的结果绘制到JavaScript中的新函数中
- 如何绘制图表在PHP或Javascript或JQuery从雅虎财经CSV api的结果