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
所有内容的SEPARATE视图。这个新视图有'逻辑',处理了ajax请求并吐出结果,然后我告诉我的AJAX调用发送到div。不要忘记为新视图制作网址。这是您需要发送ajax请求的地方。
答案 0 :(得分:2)
您未在search
选项中指定参数名称data:
。
data: { search: $("#foo").val() },