如何在django视图中从jquery/ajax反序列化数据

如何在django视图中从jquery/ajax反序列化数据,jquery,json,django,Jquery,Json,Django,我想反序列化这个数据 csrfmiddlewaretoken=5U9FGV8GDMFT6WU1ZWPJLRXWISXHAELLFVKTTQKT2HTZWC6UNQFQ1AEOGAOKIJWB5&title=jstree+inline+HTML+demo&ubc=1&company name=teste&company cnpj=222.222-22&company email=teste%40gmail.com 但是当我尝试json.loads(data)或data.json()时 我得到这个错

我想反序列化这个数据

csrfmiddlewaretoken=5U9FGV8GDMFT6WU1ZWPJLRXWISXHAELLFVKTTQKT2HTZWC6UNQFQ1AEOGAOKIJWB5&title=jstree+inline+HTML+demo&ubc=1&company name=teste&company cnpj=222.222-22&company email=teste%40gmail.com

但是当我尝试json.loads(data)或data.json()时

我得到这个错误

从None引发JSONDecodeError(“预期值”,s,err.value) json.decoder.JSONDecodeError:预期值:第1行第1列(字符0)


这会让你更接近你想去的地方

        $.ajax({
            url: "{% url 'project_create' %}",
            data: JSON.stringify(form.serializeArray()),
            type: 'POST',
            dataType: 'json',
            headers: {'X-CSRFToken': '{{ csrf_token }}'},    
            contentType: 'application/json; charset=utf-8',    
您可以使用以下内容查看差异(主要是从jQuery serializeArray文档中窃取的):


4.
5.
6.
7.
$('form')。关于('submit',函数(e){
e、 预防默认值();
变量形式=$(此)
log($(this.serialize());
log($(this.serializeArray());
返回false;
});

这会让你更接近你想去的地方

        $.ajax({
            url: "{% url 'project_create' %}",
            data: JSON.stringify(form.serializeArray()),
            type: 'POST',
            dataType: 'json',
            headers: {'X-CSRFToken': '{{ csrf_token }}'},    
            contentType: 'application/json; charset=utf-8',    
您可以使用以下内容查看差异(主要是从jQuery serializeArray文档中窃取的):


4.
5.
6.
7.
$('form')。关于('submit',函数(e){
e、 预防默认值();
变量形式=$(此)
log($(this.serialize());
log($(this.serializeArray());
返回false;
});

这是URL编码的数据,而不是json。很抱歉,我还在学习,如何使这些数据在我的视图中可用,因为我正在尝试在我的formwell中使用它。首先,如果要传输json(
application/json;charset=utf-8
),并将数据属性转换为json字符串,您需要正确的contentType(记住,json是一种字符串格式。)很抱歉打扰您,但是现在我得到了这个“为了允许非dict对象被序列化设置”TypeError:为了允许非dict对象被序列化,将safe参数设置为False。这是urlencoded数据,而不是json。抱歉,我还在学习,我如何使此数据在我的视图中可用,因为我正在尝试在我的formwell中使用它,首先,如果要传输json(
application/json;charset=utf-8
),并将数据属性转换为json字符串,则需要正确的contentType(请记住,json是字符串格式)很抱歉打扰您,但是现在我得到了这样一个信息“为了允许非dict对象被序列化,请设置”TypeError:为了允许非dict对象被序列化,请将safe参数设置为False。感谢您的帮助,但是当我使用contentType时:“application/json;charset=utf-8”,我尝试打印(request.POST)或request.POST.dict()是emptyThank@thebjorn-节省了大量的汗水谢谢你的帮助,但是当我使用contentType:'application/json;charset=utf-8',并且我尝试打印(request.POST)或request.POST.dict()时,是emptyThank@thebjorn-节省了很多汗水
<!doctype html>
<html>
<head>
  <meta charset="UTF-8">
  <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>

<form>
  <div><input type="text" name="a" value="1" id="a"></div>
  <div><input type="text" name="b" value="2" id="b"></div>
  <div><input type="hidden" name="c" value="3" id="c"></div>
  <div>
    <textarea name="d" rows="8" cols="40">4</textarea>
  </div>
  <div><select name="e">
    <option value="5" selected="selected">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
  </select></div>
  <div>
    <input type="checkbox" name="f" value="8" id="f">
  </div>
  <div>
    <input type="submit" name="g" value="Submit" id="g">
  </div>
</form>

<script>
$('form').on('submit', function (e) {
    e.preventDefault();
    var form = $(this)                                       
    console.log($(this).serialize());
    console.log($(this).serializeArray());
    return false;
});
</script>

</body>
</html>