2

ajaxで値を更新したいときに、ページでエディターを使用します。次のエラーが発生します。UncaughtTypeError:循環構造をJSONに変換しています

これは私の見解です:

@{
    Layout = null;
}

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Edit</title>

    <script type="text/javascript">
        $(function () {
            $("#editor").kendoEditor({
                value: "@Html.Raw(Model.Content)"
            });
            $("#back").click(function () {
                $.get('@Url.Action("Index", "Editor")', { siteId: "@ViewBag.SiteId", widgetId: "@Model.WidgetId" },
                              function (data) {
                                  $("div[data-role='popup']").remove();
                                  var indexContent = $(data).find("#content");
                                  $(indexContent).fadeIn(101);
                                  $("#content").replaceWith(indexContent);
                              });


            });
            var content = $("#editor").data("kendoEditor");
            $("#save").click(function () {
                var editor = {
                    Id: 1,
                    Content: content,
                    Title: 1,
                };

                $.ajax({
                    url: '@Url.Action("Update", "Editor")',
                    type: "POST",
                    contentType: "application/json charset=UTF-8",
                    dataType: "json",
                    data: JSON.stringify(editor),

                });
    });
        });
    </script>
</head>
<body>
    <div id="editorContainer">
        <div id="editorContent">
            <input type="text"  value="@Model.Title" style="width:300px" id="title"/>
            <textarea id="editor" rows="10" cols="30" style="width: 740px; height: 440px">
</textarea>
        </div>


    </div>
    <button id="save">ذخیره</button>
    <button id="back">بازگشت</button>
</body>
</html>

私の見解では、jquery ajaxで値を投稿しますが、エラーが発生します。

4

2 に答える 2

1

循環参照を含むオブジェクト階層を JSON でシリアル化することはできません。これは、JSON 形式ではサポートされていません。ビュー モデルを使用し、オブジェクトに存在する循環依存を解消する必要があります。

于 2012-10-19T07:16:46.767 に答える
0
saveButton.click(function () {
                var model = {
                    Id: '@Model.Id',
                    Content: editor.data("kendoEditor").encodedValue(),
                    Title: $('#title').val(),
                };

                $.ajax({
                    url: '@Url.Action("Update", "Editor")',
                    type: "POST",
                    contentType: "application/json charset=UTF-8",
                    dataType: "json",
                    data: JSON.stringify({ editor: model, siteId: '@ViewBag.siteId' }),
                        success: function () {
                            alert('تغییرات مورد نظر با موفقیت اعمال شد.');
                            //window.parent.document.location.replace('@Url.Action("SiteIndex", "Editor")?' + parametrs);
                         },
                    error: function () {
                        alert('متاسفانه خطایی در سیستم رخ داد،دوباره تلاش کنید.');
                    }
                });
            });

これは正しいです

于 2012-10-23T19:36:10.840 に答える