与对象一起使用时,JSON.stringify()出现“不支持值参数的循环引用”错误

时间:2018-08-15 17:01:52

标签: jquery json ajax stringify

我的函数创建一个对象并将其发送给另一个函数:

function Function1(){

    var id = '@Html.Raw(Model.ID)';
    var amount = '@Html.Raw(Model.Amount)';
    var desc = '@Html.Raw(Model.Description)';

    var data = { ID: id, Amount: amount, Desc: desc };

    Function2(data)
}

然后使用Function2,在通过stringify请求发送数据之前,先获取数据并尝试Ajax

function Function2(data){

 var URL = this.element.attr("url") 
 var sendData;

  if(data != null){      
     sendData = JSON.stringify(data);
  } 

  $.ajax(
    {
        url: URL,
        type: 'post',
        dataType: "html",
        data: sendData,
        contentType: 'application/json; charset=utf-8',
        success: function (result) {
            var dialog = $("#mainWindow").data("kendoWindow");
            $("#dataWin").html(result);
            dialog.open();
        }
    })

}

执行JSON.stringify(data)逻辑时,出现错误:

  

不支持value参数中的循环引用

那是为什么,我在做什么错?

1 个答案:

答案 0 :(得分:1)

检查代码中是否有任何循环引用,如下所示。

var john = new Object();  
var mary = new Object();  
john.sister = mary;  
mary.brother = john;  
  
// This line causes a runtime error.  
var error = JSON.stringify(john);

参考:https://docs.microsoft.com/en-us/scripting/javascript/misc/circular-reference-in-value-argument-not-supported