2012-07-30 5 views
0

내가 만들고있는 애플리케이션의 웹 사이트에서 JSON 데이터를 검색하고 표시 할 수 있어야합니다. 내 응용 프로그램에 구현하기 전에 다른 곳에서 테스트하여 어떻게 작동하는지 이해해야한다고 생각했습니다. 다음 HTML 및 JSON 코드를 테스트했지만 응용 프로그램을 실행하면 Uncaught가 나타납니다. TypeError : 파일에서 정의되지 않은 '0'속성을 읽을 수 없습니다 : ///android_asset/www/projectName.html : 11 내가 무엇입니까? 잘못하고있는거야?외부 JSON 데이터 가져 오기

HTML :

<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> 
    </script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("button").click(function(){ 
      $.get('testData.json', function(data) { 
       alert('get performed'); 
       var obj = eval ("(" + data + ")"); 
       $("p").html(obj.data_set[0].data1); 
      }); 
     }); 
    }); 
</script> 
</head> 

<body> 
<h2>Heading</h2> 
<p>Display</p> 
<button>Click me</button> 
</body> 
</html> 

JSON 파일 :

[{"data_set":{"data1":"string","data2":null,"data3":22.0}}] 
+0

'eval'은 필요하지 않습니다. 나는 당신이 [JSON이 무엇이고 어떻게 사용하는지] 읽는 것을 제안한다. (http://www.copterlabs.com/blog/json-what-it-is-how-it-works-how-to-use-it/) – xdumaine

답변

0

변경 $.getJSON-$.get 또는이

UPDATE처럼라는 $의 갔지에서 데이터 유형을 설정

I 또한 제대로 당신은 불필요 eval을 사용하고이

$.get('testData.json', function(data) { 
    alert('get performed'); 
    $("p").html(obj[0].data_set.data1); 
},'json'); 
+0

'$ .getJSON'으로'$ .getJSON'을 변경하면 Uncaught Syntax Error : 파일에서 예상치 못한 식별자가 발생합니다 : ///android_asset/www/projectName.html : 1 – Alwaysdeadfred

+0

내 업데이트 대답을 확인하십시오 – Jorge

+0

그래도 작동하지만 ''json ''을 포함 시키거나 액세스하려고 시도하고있는 실제 웹 사이트로 URL을 변경하면 여전히 나의 마지막 코멘트에서 오류가 발생합니다. 웹 사이트의 json 데이터는 내가 제공 한 샘플과 동일한 구조로되어 있습니다. – Alwaysdeadfred

0

같은 시도 JSON을 구문 분석하지 않는 것을 깨달았다. what JSON is and how to use it에 대해 읽어 보시기 바랍니다.

이미 dataeval을 사용할 필요가 없습니다. 이는 이미 JSON 개체이기 때문입니다. 코드 문제는 data_setdata 속성으로 액세스하려고한다는 것입니다. 그러나 data은 실제로 하나의 명명되지 않은 객체가있는 배열입니다. 해당 개체의 구성원은 data_set입니다. 차례로 data_set은 배열이 아닌 객체이므로 data_set[0]을 사용할 수 없습니다. 당신은 같은 것을 갖고 싶어 :

$(document).ready(function(){ 
    $("button").click(function(){ 
     $.getJSON('testData.json', function(data) { 
      alert('get performed'); 
      $("p").html(data[0].data_set.data1); 
     }); 
    }); 
});​ 

체크 아웃

+0

'data_set [0]'대신'data [0]'을 사용하면 위에서 제시 한 것처럼 동작하지만'var obj = eval ("("+ data + ")");를 제거하고 그 아래의 행을' Uncaught TypeError : file : ///android_asset/www/projectName.html : 10에서 정의되지 않은 'data1'속성을 읽을 수 없습니다. ($ [ "p") .html (data [0] .data_set.data1); – Alwaysdeadfred

+0

내가 게시 한 정확한 JSON 데이터를 testData.json에 다시 붙여 넣은 다음 원본 주석에서 제공 한 코드로 두 번째 스크립트 태그 집합 사이에서 코드를 교체했지만 여전히 오류가 발생합니다. 그러나'$ .get'을'$ .getJSON'으로 변경하면 작동합니다. – Alwaysdeadfred

0

this jsfiddle이 jsFidle를 참조하십시오 : 나는 전체 데이터 구조 (단지 하나의 가능한 경로)를 통과하는 몇 가지 코드를 포함 http://jsfiddle.net/7Uxtg/

. 필요한 부분 가져 오기

$(document).ready(function() { 
    $("button").click(function() { 
     $.ajax({ 
      url: '/gh/gist/response.json/37ab4c69a04628428ce2', 
      dataType: 'json', 
      success: function (json) { 
       // to display everything 
       /*$.each(json, function (k, v) { 
        $.each(v.data_set, function (key, value) { 
         $('p').append(value); 
        }); 
       });*/ 

       // to display just the string 
       $('p').html(json[0].data_set.data1); 
      } 
     }); 
    }); 
}); 
관련 문제