解析在Django中通过AJAX发送的JSON对象

时间:2016-04-12 16:27:58

标签: json ajax django django-views

这是我创建json文件的代码:

$( ".save" ).on("click", function(){
var items=[];


$("tr.data").each(function() {

 var item = {
  itemCode : $(this).find('td:nth-child(1) span').html(),
  itemQuantity : $(this).find('td:nth-child(4) span').html()        
 };
items.push(item);       
 });
});

现在json对象看起来像:

[{"itemcode":"code1","itemquantity":"quantity1"},{"itemcode":"code2","itemquantity":"quantity2"},...]

我的问题是如何在Django视图中解析这些数据?

以下是我的AJAX功能供参考:

(function() {
    $.ajax({
        url : "", 
        type: "POST",
        data:{ bill_details: JSON.stringify(items),
                calltype:'save'},
        dataType: "application/json", // datatype being sent

        success : function(jsondata) {  

            //do something
        },

            error : function() {
                //do something
            }
    });
}());

由于我向同一个视图发送多个AJAX请求,我也需要'calltype'数据。

谢谢你的回答!!顺便说一句,我非常需要知道这个简单的东西,我很想知道

这是我的解析代码片段:

if (calltype == 'save'):
        response_data = {}
        bill_data = json.loads(request.POST.get('bill_details'))
        itemcode1=bill_details[0]['itemCode'] 
        #this part is just for checking
        response_data['name'] = itemcode1
        jsondata = json.dumps(response_data)
        return HttpResponse(jsondata)

引发的错误是

string indices must be integers

请求帮助

供您参考,这是我的POST响应(取自追溯):

bill_details = '[{"itemCode":"sav","itemQuantity":"4"}]'
calltype = 'save'
csrfmiddlewaretoken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

EDITED Django View

这是我编辑过的观点:

        if (calltype == 'save'):
        bill_detail = request.POST.get('bill_details')
        response_data = {}
        bill_data = json.loads(bill_detail)
        itemcode1=bill_data[0]['itemCode'] 
        #this part is just for checking
        response_data['name'] = itemcode1
        jsondata = json.dumps(response_data)
        return HttpResponse(jsondata)

我无法理解这个问题。那么,要解决它,我的问题是:get调用返回的数据类型是什么,json.loads的输入数据类型应该是什么。 Bcoz显示的错误是json.loads文件必须是字符串类型!! (严重地处于不确定状态) 错误:

the JSON object must be str, not 'NoneType'

0 个答案:

没有答案