455

単純なJSON文字列の解析に問題があります。JSONLintで確認しましたが、有効であることがわかります。しかし、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>

注:json_encode()PHPを使用して文字列をエンコードしています。

4

8 に答える 8

811

あなたのデータはすでにオブジェクトです。解析する必要はありません。javascriptインタープリターはすでにそれを解析しています。

var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details['ques_title']);
于 2013-03-25T14:17:54.933 に答える
72

解析してみてください:

var yourval = jQuery.parseJSON(JSON.stringify(data));
于 2015-07-14T15:32:37.537 に答える
14

使用JSON.stringify(data);

$.ajax({
    url: ...
    success:function(data){
        JSON.stringify(data); //to string
        alert(data.you_value); //to view you pop up
    }
});
于 2015-02-25T17:08:52.973 に答える
11

ただし、エラーの原因は、完全なJSON文字列を引用符で囲む必要があることです。以下はあなたのサンプルを修正します:

<!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>

他の回答者が述べたように、オブジェクトはすでにJSオブジェクトに解析されているため、解析する必要はありません。解析せずに同じことを達成する方法を示すために、次のことを行うことができます。

<!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>
于 2013-03-25T14:30:05.797 に答える
10

cur_ques_detailsはすでにJSオブジェクトであるため、解析する必要はありません

于 2013-03-25T14:17:53.947 に答える
6

応答はすでに解析されているため、再度解析する必要はありません。もう一度解析すると、「unexpected token o」が表示されます。文字列として取得する必要がある場合は、JSON.stringify()

于 2014-09-29T20:54:29.597 に答える
6

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"、データはJSON文字列です。その後、の使用$.parseJSONは大丈夫です。

于 2014-10-08T07:17:57.183 に答える
1

unexpected token o私の(不完全な)コードが以前に実行され(ライブリロード!)、特定のキー付きローカルストレージ値を[object Object]の代わりに設定したため、このエラーが発生していまし{}た。キーを変更するまで、物事は期待どおりに機能し始めませんでした。または、次の手順に従って、誤って設定されたlocalStorage値を削除することもできます。

于 2015-02-22T06:38:42.753 に答える