2017-03-01 5 views
0

私はここにJSON文書を持っています。私はJSlintでそれを確認しました。なぜこのJSONファイルが奇妙に読まれているのですか

JSONは、この形式は次のとおりです。

[{ 
    "date": "2017-02-10", 
    " action": "Do a thing", 
    "state": "closed", 
    "url": "https:someurl.com" 
}, 
.... 

私はJSONを読み出して出力するために存在するいくつかのHTML hereを、持っています。

HTMLは次のようになります。

<html> 

<head> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
</head> 

<body> 
    <script> 
     deadlines = [] 
     start(); 

     function start() { 
      var req = new XMLHttpRequest(); 
      req.open("GET", "http://joereddington.com/deadlines.json"); 
      req.overrideMimeType("application/json"); 
      req.send(null); 
      req.onreadystatechange = function() { 
       if (req.readyState == 4 && req.status == 200) { 
        var obj = JSON.parse(req.responseText); 
        deadlines = obj 
        for (deadline in deadlines) { 
         var output = ''; 
         for (var property in deadline) { 
          console.log(property) 
          output += property + ': ' + deadline[property] + '; '; 
         } 
         console.log(output); 
         console.log(deadline.date) 
         console.log(deadline.action) 
        } 
       } 
      }; 
     } 
    </script> 

</body> 

をしかし、私がしようとすると、各オブジェクトのプロパティを一覧表示するとき、私は非常に奇妙な結果を得る:

enter image description here

ではなく、名前をと私が探している価値誰かが私が間違っていることを教えてもらえますか?

+1

'deadlines'は**配列**です。だから、 'for'ではなく' for'によって反復されなければなりません。 – hindmost

+0

JSON上にクロスオリジンヘッダがないので、正しく診断できません。配列をループするには 'for(x in y)'の代わりに 'deadlines.forEach(function(deadline){...})'を使います。 –

+0

@Liam Grayリクエストは同じドメインなので、CORSはここでは適用されません。 – hindmost

答えて

0

for...inキーのループ(配列のため、"0""1" ...)。 for...ofまたはforEachまたは基本ループforループを使用してください。

私はこのようなforEachをお勧めします。

deadlines.forEach(function(deadline) { 
    // ... 
}); 
2
$.each(JSON.parse(deadlines), function (index, deadline) { 
    var output = ''; 
    for (var property in deadline) { 
     console.log(property) 
     output += property + ': ' + deadline[property] + '; '; 
    } 
    console.log(output); 
    console.log(deadline.date); 
    console.log(deadline.action); 
}); 

あなたのJSON文字列に余分なスペースが含まれています。それは「行動」ではなく「行動」でなければなりません。

+1

http://needsmorejquery.com –

+0

余分なスペースは良い呼び出しでした。それともう1つのビットがこれを解決しました。 – Joe

関連する問題