jQuery发送的发布请求被视为获取请求

问题描述 投票:1回答:1

我试图通过JS发送POST请求:

    <div>
        <h4>Comments</h4>
        <form method='POST'>
        <textarea class="form-control" id="commentContent" rows="5" name='comment'></textarea>
        <br>
        <button type="submit" id="commentBtn" class="btn btn-primary">Post Your Comment</button>
        </form>
    </div>
 </div><!--class="col-xs-8 col-md-8"-->
</div><!-- row -->

<script type="text/javascript" src="/static/js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="/static/js/jquery.csrf.js"></script>

<script>
$(document).ready(function(){
    var article_id = {{ article.id }};
  var page_number = {{ page.number }};

    $("#commentBtn").click(function(){
        var comment =$("#commentContent").val();
        var param = {"article_id":article_id, "content":comment};

        $.post("/article/comment/create/", param, function(data){
            var ret = JSON.parse(data);
            if (ret["status"]=="ok") {
                $("#commentContent").val("");
                window.location.href="/article/detail/{{ article.id }}?page_number={{ page.num_pages }}" \\change to the final page
            }else{
                alert(ret["msg"]);
            }
        });
    })
});
</script>

它立即提醒以下错误:

[13/Jun/2018 18:54:35] "GET /article/detail/16?comment= HTTP/1.1" 200 5085
[13/Jun/2018 18:54:38] "GET /article/detail/16?comment=rr HTTP/1.1" 200 5085
[13/Jun/2018 18:54:42] "GET /article/detail/16?comment= HTTP/1.1" 200 5085

我创建了一个处理csrf token之后的Cross Site Request Forgery protection | Django documentation | Django

但是,post请求无法发送,并被视为get请求。

我怎么能解决这个问题?

jquery django
1个回答
0
投票

这是因为你的代码:

    $.post("/article/comment/create/", param, function(data){
        var ret = JSON.parse(data);
        if (ret["status"]=="ok") {
            $("#commentContent").val("");
            window.location.href="/article/detail/{{ article.id }}?page_number={{ page.num_pages }}" \\change to the final page
        }else{
            alert(ret["msg"]);
        }
    });

当它执行post/article/comment/create/,成功时,它刷新页面/article/detail/{{ article.id }}?page_number={{ page.num_pages }},这是一个get请求。

此外,它可能会从调试器中删除先前的请求。

© www.soinside.com 2019 - 2024. All rights reserved.