2011-05-15 5 views
0

jQuery 달력이 있으며 매일 Facebook 주석 플러그인이있는 동적 페이지에 링크되어 있습니다. 지금은이 같은 페이스 북의 API를 호출하여 의견의 수를 얻을 수 있습니다 :JSON에서 Facebook의 의견 호출

$(".comm").each(function(){ 
     var root = "https://graph.facebook.com/?ids="; 
     var ids = "http://root.toUrl.com/"; 
     var callback = "&callback=?"; 
     var date = $(this).attr('href'); 
     var fecha = root + ids + date + callback; 
     $.getJSON(fecha, function(data){ 
     for(comments_num in data){ 
     var user = data[comments_num]; 
     $('.iframecont').append(user.comments); 
     console.log(user.comments); 
} 
}); 
}); 

페이스 북은 당신이 의견은 한 번에 하나 개의 URL에 대한 그래프 API를 통해 계산 얻을 수 있습니다. 따라서 30 일 일정이있는 경우 각 URL 응답을 얻기 위해 30 개의 URL을 호출해야합니다. 예를 들어, 2011 년 5 월 5 일에 대한 의견 수를 검색하려면 URL은 https://graph.facebook.com/?ids=http://root.toUrl.com/phpDynamicpageGenerator.php?date=2011-5-3&callback=?이됩니다. 나는 매일 상대방에게 전화를 걸어 답을 해독하고 그 결과를 매일 div 안에있는 p에 추가해야한다.

 
{ 
    "http://example.com/": { 
     "id": "http://example.com/", 
     "shares": 72603, 
     "comments": 14483 
    } 
} 

User.comments가 14483.

이 코드가 제대로 데이터를 검색이 경우에있을 것입니다,하지만 지금은 매일 '.iframecont은'모든 JSON 응답에 표시됩니다

데이터는이 반환 행은 다음과 같습니다. 62212221222...

정확한 응답 수가 올바른 날짜로 할당되도록하려면 해당 응답 div에 각 응답을 어떻게 분배합니까?

미리 감사드립니다. 다음과 같은 HTML을 가정

답변

0

, 클래스 "commm"와 앵커 태그의 각각에 대해

<div> <!-- div n-1 --> 
<a href="someurl" class="comm">some text</a> 
<p class="iframecont"></p> 
</div> 
<div> <!-- div n --> 
<a href="someurl" class="comm">some text</a> 
<p class="iframecont"></p> 
</div> 
<div> <!-- div n+1 --> 
<a href="someurl" class="comm">some text</a> 
<p class="iframecont"></p> 
</div> 

, 당신은 속성 "HREF"의 값을 추출하여 API 호출을합니다. api 호출은 일부 json 데이터를 반환합니다. 당신은 어떻게 든 그것을 해석합니다. [당신이 말한 json을 보면, 왜 반복문이 필요한지, 왜 모든 반복문에 추가 할 수 있는지 이해할 수 없습니다. 그러나 나는 그것을 현재 무시할 것이다.] 이제 해당 단락 태그에 추가해야합니다.

확인. 따라서 다음과 같이 함수를 다시 작성하십시오.

$(".comm").each(function(){ 
    var root = "https://graph.facebook.com/?ids="; 
    var ids = "http://root.toUrl.com/"; 
    var callback = "&callback=?"; 
    var date = $(this).attr('href'); 

    // important. read http://bonsaiden.github.com/JavaScript-Garden/#function.this 
    var $that = $(this); 

    var fecha = root + ids + date + callback; 

    $.getJSON(fecha, function(data){ 
     // why is this for loop needed?? 
     for(comments_num in data){ 
      var user = data[comments_num]; 
      console.log(user.comments); 

      $that.parent().children("p.iframecont").append("num_of_comments"); 

      // OR you can use this 
      // $that.siblings("p.iframecont").append("num_of_comments"); 
      // what to use will be decided by the exact structure of your html. 
      // check out http://api.jquery.com/category/traversing/ 
      // in my example, either method will work 
     } 
    }); 
}); 

주의 사항. $는 자바 스크립트 변수입니다. 우리는 그것의 acutally 한 jquery 객체임을 나타 내기 위해 $ 접두사를 붙인다. 그것의 정상적인 대회. 우리는 API 호출을하고있는 요소에 대한 참조를 캐싱합니다. 이제 콜백 함수가 실행되면 캐시 된 $를 사용하여 해당 단락 태그를 찾습니다. 위 예에서 <a><p>은 모두 <div> 태그의 하위 태그입니다.

귀하의 html 구조가 다를 수 있으므로 http://api.jquery.com/category/traversing/을 참조하고 이에 따라 순회를 수정하십시오.

+0

문제는 user.comments가 30 개의 결과를 모두 반환하고 그 ID에 모두 추가한다는 것입니다. 각 JSON 객체를 호출하고 소스 발신자에게 결과를 추가하는 방법이 필요합니다. – sfera

+0

user.comments에는 하루에 여러 개의 주석이 포함되어 있으며 공백이나 쉼표 또는 구분 기호로 구분되어 있지 않습니까? 실제로 변수 데이터와 user.comments가 실제로 포함하고있는 것과 같은 세부 사항으로 질문을 업데이트 할 수 있습니까? 그러면 모든 사람이 문제를 더 잘 이해할 수 있습니다. –

+0

죄송합니다. 더 나은 설명을 위해 질문을 업데이트했습니다 ... User.comments는 하루 동안의 댓글 수만 포함하고 있으며, 페이스 북이 응답을 제공하는 방식입니다 : 한 번에 URL과 관련된 댓글 ... – sfera