Ajax将列表作为字符串发送,而不仅仅是列表

时间:2017-11-09 18:32:38

标签: jquery ajax django

我正在使用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);导致了这种情况,但是如果删除它,视图就不会收到任何内容。

如何将其转换为我想要的列表?

2 个答案:

答案 0 :(得分:3)

在Django中收到JSON时需要解析JSON

vals = json.loads(vals)

答案 1 :(得分:0)

尝试在ajax请求中设置contentType: "application/json;charset=utf-8"