【问题标题】:Can I fix the error: "JSON.parse: unexpected character"我可以修复错误:“JSON.parse:意外字符”
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-01-21
    • 1970-01-01
    • 2014-04-17
    • 2013-06-02
    • 2013-12-02
    • 2012-03-30
    • 2014-09-08
    相关资源
    最近更新 更多