Parsing JSON giving “unexpected token o” error
本问题已经有最佳答案,请猛点这里访问。
我在分析简单的JSON字符串时遇到问题。我在jsonlint上检查过它们,它表明它们是有效的。但是,当我试图使用
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!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']); </body> </html> |
注意:我使用PHP中的
您的数据已经是一个对象。不需要解析它。javascript解释器已经为您解析了它。
1 2 | var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"}; document.write(cur_ques_details['ques_title']); |
尝试解析:
1 | var yourval = jQuery.parseJSON(JSON.stringify(data)); |
使用
1 2 3 4 5 6 7 | $.ajax({ url: ... success:function(data){ JSON.stringify(data); //to string alert(data.you_value); //to view you pop up } }); |
但是,您的错误的根源是需要将完整的JSON字符串放在引号中。以下内容将修复您的示例:
1 2 3 4 5 6 7 8 9 10 11 12 | <!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']); </body> </html> |
正如其他受访者提到的,该对象已经被解析为JS对象,因此您不需要解析它。要演示如何在不解析的情况下完成相同的操作,可以执行以下操作:
1 2 3 4 5 6 7 8 9 10 11 | <!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); </body> </html> |
响应已经被解析,您不需要再次解析它。如果你再次分析它,它会给你"
我在使用jquery ajax提交数据时遇到了同样的问题:
1 2 3 4 5 6 7 8 | $.ajax({ url:... success:function(data){ //server response's data is JSON //I use jQuery's parseJSON method $.parseJSON(data);//it's ERROR } }); |
如果响应是JSON,并且使用此方法,则获得的数据是一个javascript对象,但是如果使用
我看到这个