Django Page没有刷新从服务器发送的新数据

时间:2017-03-01 19:08:00

标签: jquery ajax django python-3.x django-views

我是Django的新手,所以我会尽力描述我的情景:

  1. 用户输入一些要搜索的字符串
  2. 数据从服务器返回,数据相应地填充在表格中
  3. 然后,用户可以单击按钮,数据将显示在模态对话框中
  4. 在对话框中,用户可以更改搜索值并点击搜索按钮以重新搜索新值
  5. 将发布请求发送到服务器,并在视图文件中调用该函数
  6. 在开发模式(F12)下的浏览器网络中,我可以看到响应保存新数据,但页面本身显示旧数据
  7. 有人知道为什么会这样,以及如何解决这个问题?

    {{3}}

                  var url = "{% url "ebanalyzer:search" %}";
              //window.location=url;
              $.post(url,{"query" : newValue,csrfmiddlewaretoken: '{{ csrf_token }}'},function (data,status) {
                  //alert("data: " + data + "status: " +  status)
    

    newValue param获取搜索字段值

    来自urls文件的

            #/搜索     url(r' ^ search / $",views.post_new,name =' search'),

    来自views文件         @ensure_csrf_cookie     def post_new(request):     打印(request.POST ['查询'])     if request.POST [" query"]!='':         打印("渲染&#34)         return render(request,' ebanalyzer / index.html',{" object_list":ebInfo.getSoldItems(request.POST [" query"])})

    因此,只需强调流程,用户点击"粘贴"按钮 - >执行ajax帖子 - >调用post_new(到目前为止很好) - >响应返回到客户端但页面未使用新数据更新

1 个答案:

答案 0 :(得分:0)

csrfmiddlewaretoken:'{{csrf_token}}'

不要像这样放置csrf,{{csrf_token}}表示HTML代码。 将csrf_token放在模板中,无论HTML代码在哪里。

尝试使用这样的ajax请求而不是你所做的:

$.ajax({
    url:url,
    data:{
        query:newValue,
        csrfmiddlewaretoken:$('input[name="csrfmiddlewaretoken"]').val(),
    },
    success:function(data){
        $("#container").replaceWith($("#container",$(data)));
    }
});

希望这有帮助。