$('#save').click(function (e) {
e.preventDefault(); // preventing default click action
$.ajax({
url: '/share',
type: 'post',
contentType: "json",
data: JSON.stringify({
title: $('#title'),
body: $('#body'),
status: 'Published'
}),
success: function (data) {
console.log(data);
$('#{{ form.share_id.name }}').val(data.id);
},
error: function (xhr, textStatus, errorThrown) {
alert(xhr.responseText);
}
});
});
有人可以告诉我上面的json stringify如何导致循环引用?
答案 0 :(得分:3)
这是因为您正在尝试对具有dom元素引用的对象进行字符串化.dom元素具有循环引用,因为元素将引用其子元素和父元素。
我认为你可能想要的是拥有所述元素的内容#title
和#body
$('#save').click(function (e) {
e.preventDefault(); // preventing default click action
$.ajax({
url: '/share',
type: 'post',
contentType: "json",
data: JSON.stringify({
title: $('#title').text(),
body: $('#body').text(),
status: 'Published'
}),
success: function (data) {
console.log(data);
$('#{{ form.share_id.name }}').val(data.id);
},
error: function (xhr, textStatus, errorThrown) {
alert(xhr.responseText);
}
});
});
答案 1 :(得分:1)
为避免循环引用,请使用text()的text方法,而不是发送该DOM元素
//JSON.stringify({
// title: $('#title'),
// body: $('#body'),
// status: 'Published'
// }),
JSON.stringify({
title: $('#title').text(),
body: $('#body').text(),
status: 'Published'
}),