2012-11-09 3 views
0

우선, 나는 json을 처음 보았습니다. 그래서 내가 끔찍한 실수를했다면 용서해주십시오. YQL을 사용하여 웹 사이트에서 json 객체를 가져 오는 코드가 있습니다. 문자열로 반환합니다. 그래서 지금 이것을 json 객체로 파싱하고 그것을 읽는 것보다 싶습니다. 대신이 제공해야 할 가치가이 날 undifined주는 이유문자열을 json으로 변환하고 json 값을 읽는 것보다

$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url=%22http://iphone-api.uitzendinggemist.nl/v1/episodes.json%22%20and%20xpath=%27*%27&format=json", function(data) { 
console.log(data); 
content = data.query.results.html.body.p; 
json = JSON.stringify(eval("(" + content + ")")); 
str = json.revoked; 
$('#table').append('<li>' + str + '</li>'); 
}); 

JS fiddle

난 그냥 알아낼 수 없습니다 : 이 내 코드입니다.

그럼 이제 내 질문은 누군가가 왜 제대로 작동하지 않는지 알고있는 경우였습니다.

답변

0

json 변수가 배열 인 경우 색인에 액세스해야합니다.

string = json[0].revoked;

0

당신은 당신의 코드에서 많은 많은 많은 오류가 있습니다. 당신은 당신이하고있는 각 단계를 이해하려고 노력해야합니다, 그렇지 않은 것처럼 보입니다. Here's a fork of your code that does something, 내가 원하는 것이 무엇인지 확신 할 수 없습니다. eval()를 사용하여 JSON을 구문 분석하지 마십시오 기능

  • 내에서 새로운 변수를 선언 할 때

    1. 사용 var 키워드를하지만, 일부 파서를 사용 : 나는 당신이 잘못했는지 몇 가지를 말씀 드리죠. 예 : $.parseJSON(). eval()을 사용하면 반환 된 스크립트가 클라이언트에서 실행되므로 데이터를 가져 오는 데에만 관심을 가져야하므로 보안상의 위험이 있습니다.
    2. HTML을 구성 할 때 표시 할 텍스트를 인코딩해야합니다. 귀하의 경우에는 문자열 ('<li>' + str + '</li>')을 연결하지 마십시오. jQuery ($('<li>').text(str))를 사용할 수 있습니다.
    3. li 개의 요소를 table 요소에 추가하지 마십시오. ul 또는 ol 요소에 추가하거나 테이블의 경우 행과 셀을 만듭니다.
    4. 왜 당신이 평가할 것인지는 완전히 불분명하며, 객체를 문자열로 나타냅니다. 당신은 똑같은 정확한 데이터로 끝납니다.
  • 관련 문제