Django在使用AJAX时没有收到新的查询字符串

时间:2016-05-12 23:14:48

标签: javascript ajax django django-forms django-views

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请求的地方。

1 个答案:

答案 0 :(得分:2)

您未在search选项中指定参数名称data:

data: { search: $("#foo").val() },