2012-06-26 82 views
1

我正在使用黑莓5.2瀏覽器應用程序。我有一些JavaScript返回一些JSON。我知道舊版Blackberry手機不支持JSON解析,但已經能夠使用eval完成工作。Eval錯誤,黑莓5.2,Javascript

然而,在運行5.2的黑莓Curve上,我的eval語句會拋出一個錯誤。錯誤是

SyntaxError: Error in eval(): Expecting ';' found ':' ...

它試圖解析的字符串是正確和乾淨的。

的JavaScript看起來像這樣...

  request.open("POST", url, false); 

      request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
      request.setRequestHeader("Accept", "text/json"); 

      request.send(params); 
      return eval(request.responseText); 

和其努力的eval看起來像這樣的反應...

{ 
    "Authenticated": true, 
    "StatusCode": "Success", 
    "InternalErrorId": null, 
    "AuthenticationToken": "PxjcYnjBLN21ZMcWrEzKi9LC3vdXehMVSegEbVz61aca52113", 
    "AuthenticationTokenExpiry": "/Date(1340734497405)/", 
    "SessionTimeoutMinutes": 240 
} 

有誰知道可能會在這裏怎麼回事,如何解決它?

+0

我們不介意讀者。請提供[SSCCE](http://sscce.org)或其他方式來傳達確切的輸入和JavaScript以重現問題。 –

+0

對不起,現在添加更多細節。 –

+0

也許你可以包含['json2.js'](https://github.com/douglascrockford/JSON-js)而不是使用'eval'? –

回答

2

使用eval解析JSON時,需要將JSON包裝在()中。

return eval('('+request.responseText+')'); 
+1

好的。當我在瀏覽器控制檯中擺弄時,我經常會忘記這一點。 'var x = {}'_(dangit)_'var x =({})' –

+0

@MattBall:愚蠢的塊語句。 –

+0

唉很簡單,但就是這樣!謝謝。 –