我正在使用jQuery收集在网页上输入的所有信息,然后使用ajax将此信息发送到我的django视图。这是解决这个问题的代码:
var button = $("#serialise");
var JSON_content = $('#JSON_Contents')
$(button).click(function() {
var vals = [];
$("#questions :input").each(function(index) {
if($(this).attr('type') == 'checkbox') {
if($(this).prop("checked")) {
vals.push('on');
}
else {
vals.push('off');
}
}else {
vals.push($(this).val());
}
});
vals = JSON.stringify(vals);
var url = window.location.pathname;
$.ajax({
method: "POST",
url: url,
data: {
'vals': vals
},
dataType: 'json',
success: function (data) {
//On success
}
});
});
然后视图会在此处收到信息:
def add_questions(request,review_id = None):
if request.method == 'POST':
vals = request.POST.get('vals', None)
args = {'recieved': 'true'}
return JsonResponse(args)
我遇到的问题是,发送的信息是作为字符串发送的,而不是作为列表发送的。
因此,它以'["Example", "Example"]'
而不是["Example", "Example"]
发送。
我认为我的vals = JSON.stringify(vals);
导致了这种情况,但是如果删除它,视图就不会收到任何内容。
如何将其转换为我想要的列表?
答案 0 :(得分:3)
在Django中收到JSON时需要解析JSON
vals = json.loads(vals)
答案 1 :(得分:0)
尝试在ajax请求中设置contentType: "application/json;charset=utf-8"
。