【发布时间】:2016-09-08 23:55:05
【问题描述】:
AJAX 调用未向views.py 发送新的查询字符串。调用成功,但数据库没有更新结果。我想我什么都没有?如何使查询字符串到达views.py?如果我带走.preventDefault(),一切都会很好。我很确定在我的views.py中需要编辑一些东西。
html:
<form method="GET" action="">
<input id='foo' type='text' name="search" value="{{ request.GET.search }}"/>
<input type='submit'/>
</form>
javascript:
$(document).ready(function(){
$("form").submit(function(e){
e.preventDefault(); //stop submit
$.ajax({
type: "GET",
url: "{% url 'index' %}",
data: $('#foo').val(),
success: function(data){
// alert($('#foo').val());
}
});
});
});
views.py
def page(request):
stuff = model.objects.all()
query = request.GET.get("search")
if query:
stuff = stuff.filter(
Q(field__icontains=query)
)
context = {'stuff': stuff,
}
return render(request, 'app/page.html', context)
更新
我做了一些挖掘,这个link 帮助进一步解释了事情。我基本上必须创建一个单独的视图,其中包含 page 的所有内容。这个新视图具有“逻辑”,处理 ajax 请求并输出结果,然后我告诉我的 AJAX 调用发送到一个 div。不要忘记为新视图创建一个 url。这是您需要将 ajax 请求发送到的地方。
【问题讨论】:
标签: javascript ajax django django-forms django-views