通过POST将JSON对象从JavaScript发送到Python

通过POST将JSON对象从JavaScript发送到Python,javascript,python,json,django,dojo,Javascript,Python,Json,Django,Dojo,有一个客户端JavaScript和服务器端Python,由Django提供支持。有一个数据对象:foo_data={“foo”:1,“bar”:2} 现在,我想使用dojo/request/xhr发送一个post请求,并将foo_data与另一个变量一起发送: xhr.post(document.location.href, { data: { 'is_foo': true, 'data': foo_data }, headers: { '

有一个客户端JavaScript和服务器端Python,由Django提供支持。有一个数据对象:
foo_data={“foo”:1,“bar”:2}

现在,我想使用
dojo/request/xhr
发送一个post请求,并将
foo_data
与另一个变量一起发送:

xhr.post(document.location.href, {
    data: {
        'is_foo': true,
        'data': foo_data
    },
    headers: { 'Content-Type': 'application/json' }
}).then(function(text){
    console.log('The server returned: ', text);
});
然后读取Django的
views.py
文件中发送的数据:

def post(self, request, *args, **kwargs):
    json.loads(request.body)
但是,它不起作用:

  • 如果我发送
    foo_data
    ,python将无法正确地将其识别为JSON对象,并且无法使用
    JSON.loads
    读取它
  • 我无法使用
    JSON.parse对
    foo_数据进行编码,因为它已经是一个对象了
    
  • request.POST
    是一个空的
    QueryDict
  • request.body
    具有字符串词
    object
    (而不是真实对象)
有什么办法解决这个问题吗


目标:从JS--Python发送JSON对象,并在服务器端读取它。

Dojo/Debug < /C> >更多信息:

有关向服务器发送邮件的实时示例,您可以查看此页面的源代码:

下面是一些简单的用法示例:

        require(dojo/request"],
            function(request){
                    // post the data to the server
                    request.post("your/server/script", {
                        // send your data here
                        data: { yourData: 1},
                        // wait 2 seconds for a response
                        timeout: 2000

                    }).then(function(response){
                        // do smt here when operation is successfully executed
                    });

            }
        );
关于问题中的代码示例,您尚未发布服务器端代码。但是您可以尝试使用
JSON.stringify()
将数据传递到服务器