2011-12-27 60 views
3

我遇到了這個錯誤。該應用程序似乎工作正常,但它會導致Firebug停止腳本。我可以修復錯誤:「JSON.parse:意外字符」

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的哈希值。

我搜索了一下,並沒有看到有關此錯誤的任何有用信息。

+0

重新格式化all.js中的JavaScript代碼後,它看起來像代碼旨在捕獲此異常並使用querystring樣式解析器重試。所以,看起來這個錯誤應該是非致命的,應該被代碼捕獲。好像Firebug在這裏不必要地停下來。 – 2011-12-29 07:14:07

回答

7

事實證明,這個異常被調用它的javascript代碼正確捕獲和處理,但因爲我讓Firebug設置爲「中止所有錯誤」,所以無論是否捕獲到異常,它都會停止執行。

所以這個修復方法實際上是關閉了Firebug中的所有錯誤,但這完全不是Facebook腳本的問題。

+0

我在這方面浪費了太多時間... – 2014-05-20 01:02:39

相關問題