这是我创建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'