2011-02-15 4 views
0

JSON Jquery에 대한 기본적인 질문이 있습니다. 배열 객체를 추출하는 시점에서 일부러 붙어 있습니다. 내 코드는 자바 스크립트에 있으며, 여기에서 잘못하고있는 부분에 대한 설명 만 필요했습니다.JSON Jquery Array 유형

<?php 
$nor = $_SESSION["north"]; 
$sou = $_SESSION["south"]; 
$eas = $_SESSION["east"]; 
$wes = $_SESSION["west"]; 

session_destroy(); 

?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
    <head> 
    <title>jQuery JSON test</title> 
    </head> 

    <body> 


<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.js"></script> 
    <script type="text/javascript"> 
    var north = "<?php echo $nor ?>"; 
     var south = "<?php echo $sou ?>"; 
     var east = "<?php echo $eas ?>"; 
     var west = "<?php echo $wes ?>"; 

     document.write(north,south,east,west); 


    $(document).ready(function(){ 

     alert("begin loop"); 
     $.getJSON('http://api.geonames.org/earthquakesJSON?north=' + north + ' &south=' + south + '&east=' + east + '&west=' + west +'&callback=?', 
     function(data){ 
      alert(data.earthquakes); 
    }); 
}) 

    </script> 

    </body> 
</html> 

그래서 alert (data.earthquakes)를 사용할 때; 나는 정의되지 않은 연산을 얻었지만 괜찮습니다. 그러나 여기서 나는 응답을 얻었습니다. 그러나 JSON의 구조는 다음과 같습니다 :

{"earthquakes": [ 
    {"eqid":"2007hear","magnitude":8.4,"lng":101.3815,"src":"us","datetime":"2007-09-12 09:10:26","depth":30,"lat":-4.5172}, 
    {"eqid":"2007aqbk","magnitude":8,"lng":156.9567,"src":"us","datetime":"2007-04-01 18:39:56","depth":10,"lat":-8.4528}, 
    {"eqid":"2007hec6","magnitude":7.8,"lng":100.9638,"src":"us","datetime":"2007-09-12 21:49:01","depth":10,"lat":-2.5265} 
]} 

그래서 내가 정보를 원하는 등 alert(data.earthquakes[1].eqid);alert(data.earthquakes.eqid[1]);로, 그러나 나는 전용 배열을 받고 있지 않다를 추출하는 여러 가지 방법을 시도했습니다.

는 사람이 적절하게 원하는 아키텍처 결과를 얻는 방법을

  1. 로 저를 지시하고 수
  2. 내가 배열을 사용하려는 경우, 지역 배열에 모든 요소를 ​​추출하는 루프,

어떻게 그럴 수 있습니까?

+2

'을 console.log (데이터)를보십시오 '(또는 무엇이든) Chrome에서 어떤 유형의 항목이 표시되는지 확인합니다. JSON이 잘못 처리 된 것일 수 있습니다. – treeface

+2

* "나는 여기에 내가 답을 되찾고있다"* 어떻게이 결정을 했습니까? – user113716

+0

샘플 JSON 문자열이 예제일까요? 아니면 실제 응답일까요? –

답변

1

하여 JSON 객체로 정의되어있는 경우는 다음과 같습니다

var jsonData = {"earthquakes": [ 
     {"eqid":"2007hear","magnitude":8.4,"lng":101.3815,"src":"us","datetime":"2007-09-12 09:10:26","depth":30,"lat":-4.5172}, 
     {"eqid":"2007aqbk","magnitude":8,"lng":156.9567,"src":"us","datetime":"2007-04-01 18:39:56","depth":10,"lat":-8.4528}, 
     {"eqid":"2007hec6","magnitude":7.8,"lng":100.9638,"src":"us","datetime":"2007-09-12 21:49:01","depth":10,"lat":-2.5265} 
    ]}; 

이 시도 :

var myData = eval('(' + jsonData + ')'); 
var firstElement = myData.earthquakes[0]; 

이 참조의 좋은 지적입니다 : http://www.json.org/js.html

+0

1. JSON 개체가 아니지만, JavaScript 객체의 표현, JSON 사양 준수. 2. 뻔뻔스럽게도'eval'을 실행하면 엄청난 보안 문제가 발생합니다. 3. ['jQuery.getJSON'] (http://api.jquery.com/jQuery.getJSON/)이 이것을 처리합니다. –

+0

@Marcel Korpel : 일반적인 자바 스크립트 객체입니다 ('jsonData'를 참조 할 경우). –

+0

@Felix : 물론, 당신 말이 맞아요. 내 머리 속에 원래 JSON 문자열이있었습니다. –