通过从同一模板发送数据来查看django模板中的数据,而无需重新加载页面

时间:2015-11-13 18:57:28

标签: jquery ajax django

这是我的提交按钮以及ajax请求的代码

<button type="submit" onclick="fn()" />
<script> 
function fn()
{
$.ajax({  
                      url: '/',  
                      type: 'POST',
                      data: { code: 'code'},
                        success: function(response) {
                            result = JSON.parse(response); 
                            if (result.error) { 

                                alert(result.error_text);
                            } else {  // Success
                                    $('#output').show();
                                    document.getElementById('output-ans').innerHTML=result;
                                    print 'yes';

                                } 
                            }
                        }
                    });  
      }
</script>

在我的django视图中,我写了

if request.is_ajax():
    do_something()

但这似乎不起作用。请求类型是POST而不是ajax。正确接收数据,但由于这个原因,我无法修改早期的模板。

请提出一些解决此问题的方法

1 个答案:

答案 0 :(得分:0)

通过AJAX使用POST时,您需要传递CSRF令牌。如果不这样做,您将获得HTTP 403(禁止):

function fn() {
    $.ajax({  
        url: "/",  
        type: "POST",
        data: { 
            "csrfmiddlewaretoken": "{{ csrf_token }}",
            "code": "code"
        },
        success: function(response) {
            result = JSON.parse(response); 
            if (result.error) { 
                alert(result.error_text);
            } else {  // Success
                $('#output').show();
                document.getElementById('output-ans').innerHTML=result;
                print 'yes';    
            } 
        }
    });  
}

这可能是您的代码未达到此部分的原因:

if request.is_ajax():
    do_something()

检查您的控制台日志