2016-09-02 3 views
0

私はこのスクリプトを持っている:JSONをトラバースする方法は?

<script> 
    function postForm() { 
     $.post("rest/login", $("#myform").serialize()).done(function(data) { 

      if(data.status === "OK"){ 
       window.location.replace("coursesform.jsp"); 
       alert(data); 
      } 
      else alert (data.status); 

       //alert("Invalid credentials. Please use the same username and password you'd use for a SoCS machine."); 
     }); 
    } 
</script> 

私は、ログインAPIが戻って単にこの出力からもたらすものに変更:だけでなく、ユーザIDを出力するに

{"status":"OK"} 

を:

方法
{"status":"{au:true, id:testtutor}"} 

「真」と「検定官」を抽出できますか?

私はこれを試してみました:

var obj = JSON.parse(status.data); 

だから私はobj.auを行うことができますが、私はこれを受け取る:

しかし、私は、ブラウザでこれを受け取る:

VM701:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0 
+4

{{"status": "{au:true、id:testtutor}"} 'は奇妙です。これは、値が文字列である 'status'という単一のプロパティを持つオブジェクトのJSON表記です。もっと普通のバージョンは '{" au ":true、" id ":" testtutor "}}'で、これは値がオブジェクトである 'status'というプロパティを持つオブジェクトです'真と' testtutorである 'au'と' id'という2つのプロパティーを持っています。したがって、これらの値を扱う最初のステップは、使いやすい形式で出力することです。 –

+0

'status.data'は' data.status'ではありませんか? – Barmar

+1

問題はコントローラにあるようですが、正しいJSONを生成していません。私はあなたがJSONを手動で作成しようとしていると思うし、それを間違って、代わりにライブラリ関数を使用しています。 – Barmar

答えて

0
{"status":"{au:true, id:testtutor}"} 

削除」 around {au:true、id:testtutor}、 これを作るには

{"status":{au:true, id:"testtutor"}} 

その後、あなたは"{au:true, id:testtutor}"はそれが{"au":true, "id":"testtutor"}にする必要が有効なJSONではありませんので、あなたがエラーを取得しているが、あなたがすることはできませんstatus.id

によってstatus.auとidでAUを取得することができますあなたはすでにそれを "持っているからです。

0

あなたのAPIは有効なJSONを返していないか、少なくともあなたが期待している方法ではありません。 JSON.parse()が解析することができるようになります

{ 
    "status": { 
    "au": true, 
    "id": "testtutor" 
    } 
} 

...:あなたの鍵は、あなたが何かを返すべきであるので、JSONの文字列でなければなりません。

関連する問題