json中的循环引用

时间:2014-02-22 07:06:57

标签: javascript jquery json

$('#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如何导致循环引用?

2 个答案:

答案 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'
        }),