Javascript 在Django中使用发布的json对象

Javascript 在Django中使用发布的json对象,javascript,jquery,python,django,json,Javascript,Jquery,Python,Django,Json,我试图弄清楚如何处理Django中发布的json对象。我正在将一个json对象发布到服务器,并希望像python字典一样使用它 这是我的js: $.post( "/projects/vote/", obj, function(data) { //alert("Data Loaded: " + data); alert(data["msg"]); }); 我返回的内容(django视图结束): 在哪

我试图弄清楚如何处理Django中发布的json对象。我正在将一个json对象发布到服务器,并希望像python字典一样使用它

这是我的js:

$.post(
        "/projects/vote/", 
        obj,
        function(data) {
            //alert("Data Loaded: " + data);
            alert(data["msg"]);
});
我返回的内容(django视图结束):

在哪里

foo = {"msg": str(postdata)}
换句话说,我正在向服务器发布一个json对象,并向服务器上获取的python对象字符串发出警报,以便查看发生了什么

如果我的目标是:

var obj = {
    'bulk': false,
    'data': {
          'chosen': '14',
          'proj1': '15',
          'proj2': '14',
          'proj3': '16',
          'more': false,


        },
    'data2': [
           {
               'a': 'apple'
           },
           {
               'b': 'banana'
           },
        ],      
  }
我得到的回报是:

<QueryDict: {u'data[proj3]': [u'16'], u'data[proj2]': [u'14'], u'data[chosen]': [u'14'], u'data[proj1]': [u'15'], u'bulk': [u'false'], u'data2[0][a]': [u'apple'], u'data[more]': [u'false'], u'data2[1][b]': [u'banana']}>

您没有发布JSON数据。将
dataType
参数设置为
json

$.post(
        "/projects/vote/", 
        obj,
        function(data) {
            //alert("Data Loaded: " + data);
            alert(data["msg"]);
        },
        'json'
);

您没有发布JSON数据。将
dataType
参数设置为
json

$.post(
        "/projects/vote/", 
        obj,
        function(data) {
            //alert("Data Loaded: " + data);
            alert(data["msg"]);
        },
        'json'
);

您没有显示如何从帖子中获取
postdata
,但您应该使用
request.body
request.raw\u POST\u data
,在1.4之前的版本中)。

您没有显示如何从帖子中获取
postdata
,但您应该使用
request.body
request.raw\u post\u data
在1.4之前的版本中)。

您可以使用
json将json作为纯字符串发布。stringify
如下:

    $.post(
            "/projects/vote/", 
            {msg: JSON.stringify(obj)},
            function(data) {
                //alert("Data Loaded: " + data);
                alert(data);
    });
$.post(
    "/projects/vote/", 
    obj,
    function(data) {
        data=eval('(' + data+ ')');//get the json object from string.
        //alert("Data Loaded: " + data);
        alert(data["msg"]);
});
因此,在服务器端,您只需从
请求中提取
'msg'

    def view(request):
          return HttpResponse(request.POST['msg'], mimetype="application/json")

请注意,某些浏览器默认不支持
JSON.stringify
,您可能需要使用JSON库:

您可以使用
JSON.stringify
将JSON作为纯字符串发布,如下所示:

    $.post(
            "/projects/vote/", 
            {msg: JSON.stringify(obj)},
            function(data) {
                //alert("Data Loaded: " + data);
                alert(data);
    });
$.post(
    "/projects/vote/", 
    obj,
    function(data) {
        data=eval('(' + data+ ')');//get the json object from string.
        //alert("Data Loaded: " + data);
        alert(data["msg"]);
});
因此,在服务器端,您只需从
请求中提取
'msg'

    def view(request):
          return HttpResponse(request.POST['msg'], mimetype="application/json")

请注意,某些浏览器默认不支持
JSON.stringify
,您可能希望使用JSON库:

服务器可以简单地返回字符串,js可以这样编写:

    $.post(
            "/projects/vote/", 
            {msg: JSON.stringify(obj)},
            function(data) {
                //alert("Data Loaded: " + data);
                alert(data);
    });
$.post(
    "/projects/vote/", 
    obj,
    function(data) {
        data=eval('(' + data+ ')');//get the json object from string.
        //alert("Data Loaded: " + data);
        alert(data["msg"]);
});

希望这有帮助。

服务器可以简单地返回字符串,js可以这样编写:

    $.post(
            "/projects/vote/", 
            {msg: JSON.stringify(obj)},
            function(data) {
                //alert("Data Loaded: " + data);
                alert(data);
    });
$.post(
    "/projects/vote/", 
    obj,
    function(data) {
        data=eval('(' + data+ ')');//get the json object from string.
        //alert("Data Loaded: " + data);
        alert(data["msg"]);
});
希望这有帮助