繁体   English   中英

如何在Django视图中从Ajax获取和访问JSON数据?

[英]How to get and access JSON data from ajax in django view?

我正在尝试使用对视图的ajax调用从模板发送动态创建的JSON数据。 我能够通过ajax调用生成并传递JSON数据,但无法在视图中读取相同的数据。 我阅读了很多与此相关的文章和stackoverflow帖子,但对于此简单任务没有任何帮助。 以下是我的Ajax电话:

$(document).ready(function() {
    $('#applybtn').click(function(){
        var selectedpackages = [];
        {% for package in packages %}
            if($("input[name=package{{forloop.counter}}]").is(':checked')){
                type = $("input[name=package{{forloop.counter}}]:checked").attr('id');
                var Obj = {}
                Obj['pkgid'] = {{package.id}};
                Obj['type'] = type;
                selectedpackages.push(Obj);
            }
        {% endfor %}
        var mystring = JSON.stringify(selectedpackages);
        $.ajax({
            url:"/ApplyCode/",
            type:"GET",
            data:mystring,
            dataType: "json",
            contentType: "application/json",
            success: function(data){
                alert(data);
            }
        });    
    });
});

在上面给出的代码中,您可以忽略for循环部分,因为它只是循环浏览某些程序包,并检查该页面上的用户选择了哪个程序包,并相应地生成字典以作为JSON对象传递。 另外,我检查了在mystring变量中生成的数据(使用alert(mystring);),然后将其发送给查看并具有所需的数据。

下面是我的视图代码:

import json

def applycode(request):
    context=RequestContext(request)
    pkgid=""
    if request.method=='GET':
        selectedpackages = json.loads(request.body)
    else:
        pass
    return HttpResponse(selectedpackages)

我确信在“ selectedpackages”变量中获取JSON数据时,我在这里遗漏了一些东西。 我也尝试了许多其他方法,但是没有任何效果。 在这里,我只想获取数据,而不想要访问相同的每个元素。 任何帮助表示赞赏。

如果您执行GET请求,则request.body中将没有任何内容,这会将所有内容放入URL本身。 您需要更改AJAX调用才能执行POST

$.ajax({
    // ...
    type:"POST",
    // ...
});

然后相应地修改您的视图代码:

if request.method == 'POST':
    selectedpackages = json.loads(request.body)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM