【发布时间】:2012-01-28 07:00:59
【问题描述】:
我遇到了这个错误。该应用程序似乎工作正常,但它会导致 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 解析器在该行定义的 parse 方法中引发的。传递给 parse 的字符串如下所示:
"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 上的哈希。
我搜索了一下,没有看到任何关于这个错误的有用信息。
【问题讨论】:
-
在 all.js 中重新格式化 javascript 代码后,看起来该代码旨在捕获此异常并使用查询字符串样式的解析器重试。所以,看起来这个错误应该是非致命的,应该被代码捕获。似乎 Firebug 在这里不必要地停止了。
标签: facebook json cross-domain