0
AJAX调用未向view.py发送新的查询字符串。调用成功,但数据库不会更新结果。我想我什么都不做?如何让查询字符串到达views.py?一切正常,如果我带走.preventDefault()
。我非常确定我需要在我的views.py中进行编辑。Django在使用AJAX时未收到新的查询字符串
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)
UPDATE
我做了一些挖掘,这link有助于解释一些事情。我基本上必须创建一个包含page
所有内容的单独视图。这个新视图有'逻辑',处理了ajax请求并吐出了结果,然后我告诉我的AJAX调用发送给div。不要忘记为新视图制作一个网址。这是你需要发送ajax请求的地方。
这由于某种原因是行不通的。任何理由?你确定没有什么我需要添加到我的views.py吗? – Kervvv
对不起,我没有用过Django。但我不明白为什么需要特别的东西。这发送参数的方式与发送它的方式完全相同,如果您执行常规表单提交而不是AJAX。而你说过,当你取出'.preventDefault()'时,表单会起作用,这会导致它正常提交表单。 – Barmar
在'success:'函数中是否有代码显示DOM中返回的HTML? – Barmar