【发布时间】:2018-03-16 21:08:05
【问题描述】:
我正在尝试向我的表单添加一个自动完成字段。但是我不能上班。我几乎尝试了所有教程。 请求发送正常,我收到 200 响应。在开发人员工具窗格中,当我单击请求时,在响应选项卡上,我看到了整个 HTML 文件。不应该有一个json格式的东西..?? 代码如下:
models.py
class Signers(models.Model):
uid = models.IntegerField(primary_key=True)
firstName = models.CharField(max_length=255)
lastName = models.CharField(max_length=255)
views.py
def get_signers(request):
if request.is_ajax():
q = request.GET.get('term', '')
signers = Signers.objects.filter(uid__icontains=q)[:20]
results = []
for s in signers:
signer_json = {}
signer_json['id'] = s.uid
signer_json['label'] = s.uid
signer_json['value'] = s.uid
results.append(signer_json)
data = json.dumps(results)
print data
else:
data = 'fail'
mimetype = 'application/json'
return HttpResponse(data,mimetype)
urls.py
url(r'^get_signers/', views.get_signers, name='get_signers'),
praxis.html(我的模板)
<script>
$(function() {
$("#id_signerIds").autocomplete({
source: "get_signers/",
minLength: 2,
});
});
</script>
<script>
$(document).ready(function() {
$('#id_submissionTimestamp').hide();
$('#id_issueDate').hide();
});
</script>
{% endblock page_head %}
{% block content %}
<form method="POST" class="post-form">{% csrf_token %}
<!--some other fields here... -->
<div class="ui-widget">
<label for="id_signerIds">Signers: </label>
<input id="id_signerIds">
</div>
<button type="submit" class="save btn btn-default">Save</button>
</form>
{% endblock %}
【问题讨论】:
-
“但我无法工作” 究竟是什么不工作?
-
@PacoH。当我输入一些数字时,输入字段下方不会显示应有的结果
-
我明白了。试试JsonResponse。如果它不起作用,请将请求的响应包含到
get_signers/ -
您有多个问题,我想您想进行 ajax 调用,但您无处初始化。我建议将
source: "get_signers/",中的“get_singers”更改为变量并像source: "{{get_singers}}"一样传递它。如果您真的想进行 ajax 调用(更好的解决方案但更难),您必须在用户按下键时触发,将键入的键发送到您的视图并发回一些数据。
标签: jquery python json django autocomplete