获取POST <my_url> 500(OK),当使用$ .ajax POST将json发送到django视图时</my_url>

时间:2012-03-31 22:38:23

标签: javascript jquery ajax django django-csrf

Edite:根据评论中的建议细化代码,但仍然没有运气

更新:感谢ThiefMaster按照你的建议后我在我的视图功能中发现了一个错误但是现在修复后我进入了django debug

  

禁止(403)

     

CSRF验证失败。请求中止。帮助给出的理由   失败:       CSRF令牌丢失或不正确。

     

我尝试使用jquery ajax将json数据发送到django

这是我的js代码

$("#send").click(function () {
    var events = $('#calendar').fullCalendar('clientEvents');
    console.log(events);
    var filter = [];
    filter[0] = 'start';
    filter[1] = 'end';
    filter[2] = 'title';
    events = JSON.stringify(events, filter, '\t');
    console.log(events);
    $.ajax({
        type: "POST",
        data: {events: events},
        url: <my_url>,
    });
});
在chrome devtool上

每个东西都可以,直到最后一个$ .ajax()

它抛出了这个错误 无法加载资源:服务器响应状态为403(确定)

如果有人能弄清楚我做错了什么,请继续

提前致谢

2 个答案:

答案 0 :(得分:0)

data: "events"应为data: events。您的服务器可能不喜欢非json有效负载。

您还想添加contentType: 'application/json',因为您要发布json,而不是表单编码的值。如果执行期望在服务器端使用表单编码值,请使用data: {events: events}获取包含JSON字符串的POST数据字段events

答案 1 :(得分:0)

我找到了有关csrf

的Forbidden 403解决方案的其他部分

在Django docs的这个页面中

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax