【发布时间】:2012-06-12 06:07:46
【问题描述】:
我正在使用 jQuery 自动完成插件 http://www.devbridge.com/projects/autocomplete/jquery/ 在我希望以 json 格式发送响应的 Web 应用程序中提供搜索建议。
Django views.py 用于发送建议响应:
def keywords_suggestions(request):
if request.is_ajax():
suggestions = []
q = request.POST.get('q')
try:
g = KeywordsModel.objects.filter(keyword__startswith=q).order_by('count')
except KeywordsModel.DoesNotExist:
return HttpResponse("")
else:
for i in range(0,len(g)):
global suggestions
suggestions.append(g[i].keyword)
to_json = {
"query": q,
"suggestions": suggestions
}
return HttpResponse(simplejson.dumps(to_json), mimetype='application/json')
Django models.py:
class KeywordsModel(models.Model):
keyword = models.CharField(max_length=40, blank=False)
count = models.IntegerField(max_length=20)
def __unicode__(self):
return self.keyword
jQuery 代码:
$("#add-keywords").keyup(function() {
$('#add-keywords').autocomplete({
serviceUrl:'/keywords_suggestions',
minChars:3,
maxHeight:220,
width:280,
zIndex: 9999,
params: { q: $('#add-keywords').val() },
onSelect: function(value, data){ $('#add-keywords').val(value); },
});
});
我在 #add-keywords 文本框上键入时收到此错误。
Request URL:http://127.0.0.1:8000/keywords_suggestions/?q=web&query=web
Request Method:GET
Status Code:500 INTERNAL SERVER ERROR
更新
ValueError at /keywords_suggestions/
The view information.views.keywords_suggestions didn't return an HttpResponse object.
UPDATE-2
我对建议变量有疑问,也许全局建议会有问题。我做得对吗?
谁能指导我让它工作?
UPDATE-3
<input type="text" id="add-keywords" name="add-keywords" title="e.g. Web developer, Javascript, Musician, Jazz" />
如何在 Django views.py 中获取#add-keywords 文本框的值。这工作q = request.POST.get('add-keywords') 吗?
谢谢!
【问题讨论】:
-
导航到127.0.0.1:8000/keywords_suggestions/?q=web&query=web,您应该会看到错误消息。
-
打开 firebug -> 控制台 -> ctrl F5 -> 控制台中的错误 -> 右键单击并在新选项卡中打开以查看错误
-
请查看更新后的问题。谢谢!
-
你能粘贴正确缩进的代码吗?
-
这里gist.github.com/2894211 也检查更新的问题:)
标签: javascript jquery python django jquery-plugins