我正在尝试对javascript对象进行字符串化,但是当我这样做时会出现以下错误:
TypeError:循环对象值
我不相信我的代码包含任何循环引用(newServiceObject未在对象内引用),所以我不明白为什么我收到此消息.
我想将包含两个属性和数组的对象转换为单个字符串.
var serviceName = $('#newServiceNameBox').val();
var serviceCodeElemList = $(".ServiceCodeName").map(function() { return $(this).html(); } );
//create the new service object
var newServiceObject = {ServiceId:-1, ServiceName: serviceName, ServiceCodes: serviceCodeElemList };
var appendNewService = '&newService='+JSON.stringify(newServiceObject);
Run Code Online (Sandbox Code Playgroud)
错误发生在最后一行(JSON.Stringify())但我不明白为什么!
这通常是因为您要序列化一个JavaScript对象,该对象的属性在一个周期中指向彼此。
在您的示例中,newServiceObject.serviceCodeElemList指向jQuery其中确实具有循环的对象:它的context属性指向文档对象。文档对象具有指向DOM元素的指针,而DOM元素具有通过ownerDocument属性 指向文档的指针
var jqueryObj = $('div');
console.log(jqueryObj.context); // Document object
console.log(jqueryObj.context.body.firstChild.ownerDocument); // Document object
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>Run Code Online (Sandbox Code Playgroud)