2014-10-26 108 views
2

我似乎有一個奇怪的問題,我得到一個「Uncaught SyntaxError:意外的令牌P」錯誤。這是由於雙反斜槓。但是雙反斜槓需要轉義反斜槓,這似乎是從php的json_encode函數生成的100%有效的JSON。未捕獲的SyntaxError:意外的令牌 - 由於雙反斜槓

var urls = '{"MyApp\\Posts\\Post":"foo","MyApp\\Threads\\Thread":"bar"}'; 
obj = jQuery.parseJSON(urls); 

回答

4

如果console.log(urls),你可以看到,傳遞給JSON解析器的字符串值:

{"MyApp\Posts\Post":"foo","MyApp\Threads\Thread":"bar"} 

然而,\是JSON轉義字符,\P是無效的轉義序列。


「問題」是反斜槓也是JS字符串中的轉義字符。如果你想在一個JS字符串JSON產生一個反斜槓,你必須仔細逃避它:

var urls = '{"MyApp\\\\Posts\\\\Post":"foo","MyApp\\\\Threads\\\\Thread":"bar"}'; 

也就是說,存在有將字符串和JSON在JS沒有價值。你可以只使用對象文本:

var urls = {"MyApp\\Posts\\Post":"foo","MyApp\\Threads\\Thread":"bar"}; 

注:如果JSON 不是在一個字符串,但你得到它從一個Ajax調用的響應,例如,然後

{"MyApp\\Posts\\Post":"foo","MyApp\\Threads\\Thread":"bar"}' 

是有效的JSON。

相關問題