Как передать csrf токен в ajax django?

Всем привет.

Добавил в форму:

{% csrf_token %}

Сделал скрипт:

<script>
    $(".arsenal_vote_answer").click(function(e) {
        e.preventDefault();

        $.ajax({
            type: "POST",
            url: '/arsenal_votedone{{ arsenalitem.id }}',
            data:{
                arsenal: $('.arsenal_label').val(),
                csrfmiddlewaretoke: $('input[name=csrfmiddlewaretoke]').val(),
            },
            success: function(data){

                if (data) {
                    $('.arsenal_vote_figure').html(data.ars1)
                    $('.arsenal_vote_figure1').html(data.ars2)
                    $('.arsenal_vote_figure2').html(data.ars3)
                }
                else
                {}
            }
        });
    });

</script>


При клике получаю кнопку ошибку 403 - Failed to load resource: the server responded with a status of 403 (Forbidden)
Описание ошибки показывает, что ругается csrf токен.

Если просто форму обрабатывать то все идет, именно ругается на ajax. Как в запросе передать токен?
  • Вопрос задан
  • 910 просмотров
Пригласить эксперта
Ответы на вопрос 1
@shuvalov_aa
Попробуйте забирать токен не из инпута формы, а из cookie

var a = document.cookie.split(';');
var token = ''
for (i = 0; i < a.length; i++) {
    var b = a[i].split('=')
    b[0] = b[0].replace(/\s+/g, '')
    if (b[0] == 'csrftoken') {
        token = b[1]
    }
}


Уже потом подставляйте его в тело запроса.

Ну и потом у вас опечатка в названии ключа даты csrfmiddlewaretoken(на конце n пропустили)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы