两个问题解决:
- 添加引号的“OK”,使之成为法律JavaScript字符串。
- 字符串周围添加括号发送给eval这样
eval("(" + jsonString + ")")';
之前,此:
{status:OK,addresses:[0,1,2,3,4,5]}
就必须改变这一点:
{status:"OK",addresses:[0,1,2,3,4,5]}
是有效的JavaScript(注意“OK”左边的引号)。
它应该是这是有效的JSON(周围的按键报价太):
{"status":"OK", "addresses":[0,1,2,3,4,5]}
确定全部由自己也不是没有它周围的报价已知一段JavaScript代码,使之成为一个JavaScript字符串。在未来,你可以测试自己在一个小的测试床,看到的错误是在你最喜欢的JavaScript调试器是什么:
http://jsfiddle.net/jfriend00/FcSKR/
var jsonString = '{"status":"OK","addresses":[0,1,2,3,4,5]}';
var jsonObj = eval("(" + jsonString + ")");
alert("success");
如果仍然得到一个错误与{"status":"OK","addresses":[0,1,2,3,4,5]}
和括号的加入在发送到eval之前,那么您的数据不是您认为的数据,您需要进行一些调试以确切了解响应中的内容(查看调试器中的值,将值放入警报等。 )。响应中可能还有其他一些东西,你不知道会在那里。
注意:在某些情况下,像JSON.parse()
这样的JSON解析器和合法的JSON字符串比使用Javascript的eval()
更安全,可以是任何东西。
这不是一个JSON字符串,它甚至不是有效的JavaScript对象字面值。 n是JSON,我期望'eval'来处理它(但应避免使用'eval',去获取json2.js)。由于数据中没有'&',因此它必须来自您没有提供的代码。由于我们看不到,我们无法告诉您如何解决这个问题。 – Quentin
所以我确认当JSon从请求收到时,所有的“被替换为" ......这可能是问题吗? –
是的!解析器期望JSON不是HTML编码的JSON! – Quentin