首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用JSON和AJAX通过视图传递dict

使用JSON和AJAX通过视图传递dict
EN

Stack Overflow用户
提问于 2018-06-08 05:03:43
回答 2查看 52关注 0票数 0

我有一个创建字典的视图,比方说:

代码语言:javascript
复制
my_dict = {str(v): v*2 for v in range(2,8)}
my_dict['Total'] = {'Tip': 'Reconsider life choices'}
# bit of humour here
>> {'2': 4, '3': 6, '4': 8, '5': 10, '6': 12, '7': 14, 'Total': {'Tip': 'Reconsider life choices'}}

我将它作为'my_dict_json': json.dumps(my_dict)传递给我的上下文字典。

在我的模板中,我用以下命令重建它:

代码语言:javascript
复制
<button id="btn_exp" type="button" class="btn btn-primary" onclick="sendDicts()">
<script>
  var d = JSON.parse('{{my_dict_json|safe}}');
  // This is a function I bind to the onclick attr of a button
  function sendDicts(){
    $.ajax({
            url: '{% url 'my_model:intended_view' %}',
            type: 'POST',
            contentType: 'application/json',
            data: {
                'my_dict': d,
                'another_dict': d2
            },
            dataType: 'json'
        });
  }
</script>

我不确定这是否有区别,但我的预期视图是用@csrf_exempt装饰的,总之,当我检查(调试)预期视图时,我注意到request变量在它的POST上没有数据,而字典似乎在request.body上是一个带有很多%s的二进制字符串,如果我尝试使用json.loads(request.body.decode()),它会失败得很糟糕,因为:

代码语言:javascript
复制
JSONDecodeError: Expecting value: line 1 column 1 (char 0)

这里我漏掉了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-08 06:14:22

我实际上是通过删除contentType: 'application/json'解决了这个问题,不知道为什么,但是...起作用了。

票数 0
EN

Stack Overflow用户

发布于 2018-06-08 05:37:34

JSON.parse应该处理这样的字符串,该字符串包含用双引号括起来的属性名称:'{"2":4,"3":6}‘

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50750121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档