parsingJSON给“意外的令牌o”错误

我有parsing简单的JSONstring的问题。 我已经检查了他们在JSONLint ,它显示它们是有效的。 但是,当我试图parsing他们使用JSON.parse或jQuery的替代它给了我错误的unexpected token o

 <!doctype HTML> <html> <head> </head> <body> <script type="text/javascript"> var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"}; var ques_list = JSON.parse(cur_ques_details); document.write(ques_list['ques_title']); </script> </body> </html> 

注意:我在PHP中使用json_encode()编码我的string。

你的数据已经是一个对象。 没有必要parsing它。 JavaScript解释器已经为你parsing。

 var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"}; document.write(cur_ques_details['ques_title']); 

试试这样parsing:

 var yourval = jQuery.parseJSON(JSON.stringify(data)); 

cur_ques_details已经是一个JS对象,你不需要parsing它

但是,您的错误的来源是您需要将完整的JSONstring放在引号中。 以下内容将修复您的示例:

 <!doctype HTML> <html> <head> </head> <body> <script type="text/javascript"> var cur_ques_details ='{"ques_id":"15","ques_title":"jlkjlkjlkjljl"}'; var ques_list = JSON.parse(cur_ques_details); document.write(ques_list['ques_title']); </script> </body> </html> 

正如其他受访者提到的那样,这个对象已经被parsing成一个JS对象,所以你不需要parsing它。 为了演示如何在不parsing的情况下完成相同的任务,可以执行以下操作:

 <!doctype HTML> <html> <head> </head> <body> <script type="text/javascript"> var cur_ques_details ={"ques_id":"15","ques_title":"jlkjlkjlkjljl"}; document.write(cur_ques_details.ques_title); </script> </body> </html> 

我使用jQuery AJAX提交数据时遇到同样的问题:

 $.ajax({ url:... success:function(data){ //server response's data is JSON //I use jQuery's parseJSON method $.parseJSON(data);//it's ERROR } }); 

如果响应是JSON,并且您使用此方法,则您获得的数据是JavaScript对象,但是如果使用dataType:"text" ,则数据是JSONstring。 然后使用$.parseJSON是没关系的。

使用JSON.stringify(data);

 $.ajax({ url: ... success:function(data){ JSON.stringify(data); //to string alert(data.you_value); //to view you pop up } }); 

响应已被parsing,您不需要再parsing它。 如果你再次parsing它会给你“ unexpected token o ”。 如果你需要把它作为string,你可以使用JSON.stringify()

我看到这个unexpected token o错误,因为我的(不完整的)代码先前已经运行过(live reload!),并将特定的键控本地存储值设置为[object Object]而不是{} 。 直到我换了钥匙,事情才开始按预期工作。 或者,您可以按照这些说明删除不正确设置的localStorage值 。