我想反序列化此数据
csrfmiddlewaretoken = 5U9Fgv8Gdmft6wU1zwPJlRxwIsXHaElfvKTtqkT2HtzWc6uNqFq1AeogAOkIjWb5&安培;标题= jstree +直列+ HTML +演示&安培; UBC = 1&安培;公司名称=泰斯特&安培;公司CNPJ = 222.222.222-22&安培;公司的电子邮件=泰斯特%40gmail.com
但是当我尝试json.loads(data)或data.json()
时我收到此错误
从None中提出JSONDecodeError("期望值",s,err.value) json.decoder.JSONDecodeError:期望值:第1行第1列(char 0)
$('#documet').ready(function(){
$('#project_form_id').on('submit', function(event){
var csrfToken =
$('input[name="csrfmiddlewaretoken"]').val();
event.preventDefault()
var form = $(this)
$.ajax({
url: "{% url 'project_create' %}",
data: {'form':form.serialize(), 'areas':JSON.stringify(list_area)},
type: form.attr("method"),
dataType: 'json',
headers: {'X-CSRFToken': '{{ csrf_token }}'},
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
success: function(data){
console.log(data.areas)
console.log(data.project)
},
error:function(error){
console.log(error)
//$("#modal-book .modal-content").html(data.html_form);
}
});
})
})
答案 0 :(得分:2)
这可以让你更接近你想要的地方..
$.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文档中窃取):
<!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>