Axios: 帖子没有正确发送数据

创建于 2016-08-18  ·  3评论  ·  资料来源: axios/axios

你好,
我有一个 django 应用程序,我想通过单击不在<form> <button>来进行 POST
问题是发送到视图函数的数据没有被正确发送。

这是 axios 代码:

 axios({
        method: 'post',
        url: '/url/to/view'
        data: {
            obj_id: objectid,
            content_type: contenttype,
            like: !is_liked
        },
        xsrfCookieName: 'csrftoken',
        xsrfHeaderName: 'X-CSRFToken',
        headers: {'X-Requested-With': 'XMLHttpRequest',
                  'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
    }).then(function (response) { 
        console.log(response);
    });

在这里查看代码:

def my_view(request):
    print request.POST
    return HttpResponse('XX')

我无法访问 request.POST 数据,因为键是整个字典,值是空列表:
<QueryDict: {u'{"obj_id":"182","content_type":"video","like":true}': [u'']}>

最有用的评论

问题是对象默认序列化为 JSON,而您需要以“application/x-www-form-urlencoded”格式发送数据。 最简单的解决方案是使用像qs这样的库:

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 });

有关详细信息,请参阅此评论

希望这可以帮助!

所有3条评论

问题是对象默认序列化为 JSON,而您需要以“application/x-www-form-urlencoded”格式发送数据。 最简单的解决方案是使用像qs这样的库:

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 });

有关详细信息,请参阅此评论

希望这可以帮助!

另一种方法是将值放入 FormData 对象并发布

我写了 aroud 的小包装器,它适用于默认的 Django > 1.8 设置。 希望这对某人有帮助!

此页面是否有帮助?
0 / 5 - 0 等级