我可以修复错误:“JSON.parse:意外字符”

时间:2011-12-27 04:18:32

标签: facebook json cross-domain

我遇到了这个错误。该应用似乎工作正常,但它导致Firebug停止脚本。

   JSON.parse: unexpected character
   Line 9 (all.js)

有问题的行看起来像这样:

FB.provide('JSON',{stringify:function(a){if(window.Prototype&&Object.toJSON){return Object.toJSON(a);}else return JSON.stringify(a);},parse:function(a){return JSON.parse(a);},flatten:function(c){var a={};for(var b in c)if(c.hasOwnProperty(b)){var d=c[b];if(null===d||undefined===d){continue;}else if(typeof d=='string'){a[b]=d;}else a[b]=FB.JSON.stringify(d);}return a;}});

我相信Firefox的内置JSON解析器会在该行定义的解析方法中抛出异常。传递给解析的字符串如下所示:

"cb=f49f4551da8c7e&origin=http%3A%2F%2Flocalhost%3A9292%2Ff3726c758943f5&relation=parent&transport=postmessage&frame=f2b4bb038098548&code=2.AQ...fU&signed_request=_7hf...E3OCJ9&access_token=AAADj6D4s...ZDZD&expires_in=6650"

显然这不是一个有效的JSON字符串,因此解析错误。

该字符串来自以某种方式使用xd_proxy.php传递的事件,上面的字符串是该iframe的URL上的哈希值。

我搜索了一下,没有看到任何有关此错误的有用信息。

1 个答案:

答案 0 :(得分:7)

事实证明,这个异常是由调用它的javascript代码正确捕获和处理的,但是因为我将Firebug设置为“中断所有错误”,所以无论是否捕获该异常,它都会停止执行。

因此修复实际上是关闭Firebug中的“中断所有错误”,这根本不是Facebook脚本的问题。