jQuery每个函数返回“将循环结构转换为JSON”错误,与$ .proxy一起使用

时间:2013-06-10 08:26:38

标签: jquery json parsing scope each

我正在尝试解析下面表单的JSON字符串:

var jsonString = {"body": "{\n \"data\": [\n {\n \"name\": \"{name}\",\n \"id\": \"{id}\"\n },\n {\n \"name\": \"{name}\",\n \"id\": \"{id}\"\n },\n {\n \"name\": \"{name}\",\n \"id\": \"{uid}\"\n },\n {\n \"name\": \"{name}\",\n \"id\": \"{uid}\"\n }\n ],\n \"paging\": {\n \"next\": \"http://graph.facebook.com/{my_uid}/mutualfriends?user={uid_1}&access_token={access_token}&limit=5000&offset=5000&__after_id={last_id}\"\n }\n}"}

使用jQuery $ .each函数。当我执行下面的代码时,它按预期解析:

$.each(JSON.parse(jsonString).data,function(index,value){
      alert(JSON.stringify(value))
})

我怎么需要扩大回调功能的范围。当我尝试使用下面的代码实现它时。

$.each(JSON.parse(jsonString).data,$.proxy(function(index,value){
      alert(JSON.stringify(value))
}),this)

我收到错误

Converting circular structure to JSON 

任何帮助?

更新

更具体地说,我正在尝试解析的内容来自休息呼叫。如果我将JSON.stringify()应用于我得到的响应:

            [{"code":200,"headers":[{"name":"Access-Control-Allow-Origin","value":"*"},{"name":"Cache-Control","value":"private, no-cache, no-store, must-revalidate"},{"name":"Connection","value":"close"},{"name":"Content-Type","value":"text/javascript; charset=UTF-8"},{"name":"ETag","value":"\"d81f912b1730cdfd1c180d5851d2d22a8c0774c3\""},{"name":"Expires","value":"Sat, 01 Jan 2000 00:00:00 GMT"},{"name":"Pragma","value":"no-cache"}],"body":"{\n   \"data\": [\n      {\n         \"name\": \"{name}\",\n         \"id\": \"{ID}\"\n      }\n   ],\n   \"paging\": {\n      \"next\": \"{URL}\"\n   }\n}"}]

然后我尝试使用以下方法解析它:     $。每个(JSON.parse(jsonString)。数据,$。代理(函数(指数,值){           警报(JSON.stringify(值))     }),这一点)

收到错误

Converting circular structure to JSON 

如果我使用$ .proxy就行了

1 个答案:

答案 0 :(得分:0)

原来这是未捕获的语法错误的产物。而不是

$.each(JSON.parse(jsonString).data,$.proxy(function(index,value){ alert(JSON.stringify(value)) }),this)

我需要:

$.each(JSON.parse(jsonString).data,$.proxy(function(index,value){ alert(JSON.stringify(value)) },this))