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值 。