2012-06-26 70 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

唉很简单,但就是这样!谢谢。 –