2017-03-04 9 views
0

이것이 내 첫 번째 질문입니다. 나는 천천히 앞으로 천천히 자신을 해킹. 이 JSON 데이터 URL을 HTML로 표시하려고합니다. 일출과 월출을 보여주는 세트 등. 아래에는 아직 JSON URL, JSON 및 내구성이 떨어지는 스크립트가 붙여져 있으며, 아직 달 데이터를받지 못했습니다. 그 Problary는 몇 시간 전에 더 가까웠다. 문제는 내가 생각한 JSON 배열 데이터이다. 모든 후 API 페이지를 붙여 넣습니다. 누군가가 도움을 줄 수 있기를 정말로 바랍니다. : 고맙습니다.USNO Moonrise & Sunrise JSON 데이터 배열을 사용하는 방법?

마커스

PS. 제발, noobie 경고하십시오! one-liners & 비밀스러운 예제는 나를 위해 거의하지 않습니다.

URL

http://api.usno.navy.mil/rstt/oneday?date=today&coords=9S,147E&tz=10 

JSON

{ 
"error":false, 
"apiversion":"2.0.0", 
"year":2017, 
"month":3, 
"day":4, 
"dayofweek":"Saturday", 
"datechanged":false, 
"lon":147.000000, 
"lat":9.000000, 
"tz":10, 

"sundata":[ 
      {"phen":"BC", "time":"06:04"}, 
      {"phen":"R", "time":"06:25"}, 
      {"phen":"U", "time":"12:24"}, 
      {"phen":"S", "time":"18:23"}, 
      {"phen":"EC", "time":"18:44"}], 

"moondata":[ 
      {"phen":"R", "time":"10:50"}, 
      {"phen":"U", "time":"17:12"}, 
      {"phen":"S", "time":"23:36"}], 

"closestphase":{"phase":"First Quarter","date":"March 5, 2017","time":"21:32"}, 
"fracillum":"34%", 
"curphase":"Waxing Crescent" 
} 

UPDATED! 이전

<script> 
    $.getJSON("http://api.usno.navy.mil/rstt/oneday?date=today&coords=9S,147E&tz=10", function(data) { 
    console.log(data); 


     // Set the variables from the results array 
     var dusk = ["sundata"][0]["BC.time"]; 
     console.log(data); 

     var rise = ["sundata"][0]["R.time"]; 
     console.log(data); 

     var noon = ["sundata"][0]["U.time"] 
     console.log(data); 

     var sets = ["sundata"][0]["S.time"]; 
     console.log(data); 

     var dawn = ["sundata"][0]["EC.time"]; 
     console.log(data); 

     // Set the table td text 
     $('BC').text(dusk); 
     $('R').text(rise); 
     $('U').text(noon); 
     $('S').text(sets); 
     $('EC').text(dawn); 
    });   
    </script>   
    </head>  
    <body>   
    <h1>MOONSUN</h1> 
     <hr/> 
     <table border="1">   
       <td>DAWN:</td> 
       <td id="BC"></td> 
      </tr> 
      <tr> 
       <td>RISE:</td> 
       <td id="R"></td> 
      </tr> 
      <tr> 
       <td>NOON:</td> 
       <td id="U"></td> 
      </tr> 
        <tr> 
       <td>SET:</td> 
       <td id="S"></td> 
      </tr> 
        <tr> 
       <td>DUSK:</td> 
       <td id="EC"></td> 
      </tr> 
     </table> 
    </div> 
</body> 

API 링크

http://aa.usno.navy.mil/data/docs/api.php

,745,151 AS STATE OF CODE
$.getJSON("http://api.usno.navy.mil/rstt/oneday?date=today&coords=9S,147E&tz=10", function(data) { 

    data.sundata.forEach(function (sd) { 
    $('#'+sd.phen).text(sd.time) 
    }) 
var rise = data.moondata[0].time; 
var tran = data.moondata[1].time; 
var sets = data.moondata[2].time; 

    // Set the table td text 
    $('#R').text(rise); 
    $('#U').text(tran); 
    $('#S').text(sets); 
} 

}) 

CODE

새로운 JSFIDDLE

은 [링크] http://jsfiddle.net/kmg747/4egLxu2e/

+0

나는이 문제가 닫히기 전에 해결 된 것을 보았 으면 좋겠다. '넓은쪽으로'는 나에 따라 잘못 분류되었다. 문제는 특정 문제를 해결하도록 요청했습니다. 그리고 그것은했습니다. – kmg

답변

0

우선, 당신은 어떤 정보 var dusk = data["sundata"][0]["BC.time"]를 얻을 수있는 데이터 개체에 액세스해야합니다. 거기에있는 데이터 객체에주의를 기울이십시오.

배열 및 중첩 된 객체에서 데이터를 액세스/처리하는 방법도 잘못되었습니다. 끝점에서 Object()의 String, Boolan 또는 Array ([])와 같은 속성을 가진 객체를 반환하고 있습니다.

$('#BC')처럼 요소 ID 전에 # 필요는

obj.propertyIWant 또는 obj['propertyIWant']을 객체에 대한 arr[0]에, 당신이 인덱스로 할 배열에 액세스하려면 그리고 jQuery를 함께 ID로 요소에 액세스 할 수 있습니다. 당신이 그런 짓을해야 수행 할 작업에 대한

:

var dusk = data.sundata[0].time; 
var rise = data.sundata[1].time; 
var noon = data.sundata[2].time; 
var sets = data.sundata[3].time; 
var dawn = data.sundata[4].time; 

또는 더 직접적인 방법으로, 당신은 엔드 포인트에서 얻은 정보를 이용하여, 그 변수를 설정하지 않고 :

data.sundata.forEach(function (sd) { 
    $('#'+sd.phen).text(sd.time) 
}) 

HTTPS 연결을 사용하고 HTTP 링크에서 가져 오기를 시도하기 때문에 JSFiddle 링크에서 URL을 가져 오는 것이 효과가 없습니다. 작동하려면 HTTP에서 피들을 사용해야합니다. 더 많은 정보 here.

은 업데이트하려는 버전을 확인하기 위해 API을 확인한 후 업데이트되었습니다. 반환 될 수도 있고 반환되지 않을 수도있는 일부 값을 처리해야 할 수도 있습니다.

+0

고맙습니다. 지금 달 데이터를 추가 할 수있을 것입니다. – kmg

+0

안녕하세요 @kmg! StackOverflow에 오신 것을 환영합니다. 이 질문이나 답변으로 귀하의 질문이 해결되면 체크 표시를 클릭하여 [수락] (http://meta.stackexchange.com/q/5234/179419)을 고려하십시오. 이는 해결책을 찾았고 응답자와 자신에게 어느 정도의 평판을 제공한다는 것을 더 넓은 커뮤니티에 나타냅니다. 이를 수행 할 의무는 없습니다. – giorni

+0

Howdy @giorni 다시 한번 감사드립니다. 그러나 나는 태양과 달 데이터가 공유하는 이드 데이를 추월하고 그것을 'R', 'U', 'S'인 moondata로 대체 한 이슈를 공유하기 때문에 여전히 문제가있다. \t 그러나 이것을 사용하면 별도로 작업 할 수있다. 이 : var rise = data.moondata [1] .time; var noon = data.moondata [2] .time; var sets = data.moondata [3] .time; – kmg