2011-03-01 7 views
1

나는 잠시 동안 자신을 죽이고 있습니다. 원인 API를 사용하여 우리의 일부 원인에서 데이터를 가져오고 html로 표시합니다.json 값을 가져 와서 html로 표시하려면 어떻게해야합니까?

저는 페이스 북 앱을 만들었고 jquery ajax를 사용하려고합니다. 이것은 내가 무엇을 가지고 :

<script type="text/javascript"> 
$(document).ready(function() 
{ 
    $.ajax({ 
    url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'http%3A%2F%2Fapi.causes.com%2Fbeneficiaries%2F1239.xml'&format=json&callback=cbfunc", 
    dataType: "json", 
    success: function(cbfunc) { 
     $(cbfunc).find('count').each(function(){ 
      var total = $(this).find('total-raised').text(); 
      $(this).html('<p>'+total+'</p>').appendTo('#listTotalDollor'); 
     }); 
    } 
    }); 
}); 

문제는 내가 표시 할 아무것도 못하고하고 있다는 점이다. 이 문제는 크로스 도메인 문제이거나 내가 놓친 부분입니다.

감사합니다.

업데이트 코드 :

<script type="text/javascript"> 
$(document).ready(function() 
{ 
    $.ajax({ 
    url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D%22http%3A%2F%2Fapi.causes.com%2Fbeneficiaries%2F1239.json%22&format=json", 
    dataType: "json", 
    success: function(data) { 
     $.each(data.query.results, function(i, key) { 
      var total = key['total_raised']; 
      $("#listTotalDollar").html('<span>' + total + '</span>'); 
     }); 
    } 
    }); 
}); 

마지막 질문은 물어 :

내가 통화로 복귀 값 중 하나를 포맷하고 싶었다면.

내 업데이트 된 코드에서 나는 5000 달러를 받고 5000 달러를 받고 싶습니다. 당신이 나를 가리킬 수있는 좋은 혀가 있습니까?

답변

2

cbfunc에 DOM 및 JSON 액세스가 혼합되어 있습니다. 해당 쿼리에서 반환 된 각 요소에 대해 total-raised 숫자를 원한다고 가정하면 JSON을 요청하고 그에 따라 반복 할 수 있습니다.

$.ajax({ 
     // !wrapped only for readability! 
     url: "http://query.yahooapis.com/v1/public/yql? 
        q=select%20*%20from%20xml%20where%20url%3D'\ 
        http%3A%2F%2Fapi.causes.com%2Fbeneficiaries%2F1239.xml'\ 
        &format=json", 

     dataType: "json", 
     success: function(data) { 
      // `data` is actually a json structure (as requested) 
      // if you want to see it as a whole, just use 
      // console.log(data); 

      // now iterate over the json structure 
      // (see also: http://stackoverflow.com/q/1078118/89391) 
      // and set your target dom element as you like 
      // (this is just a dummy ...) 
      $.each(data.query.results, function(i, key) { 
       var total = key['total-raised'].content; 
       $("target").html('<p>' + total + '</p>'); 
      }); 
     } 
    }); 

여기에 내가 디버깅에 사용되는 코드는 다음과 같습니다 https://gist.github.com/850148. 다음은 응답의 스케치입니다.

Object 
    query: Object 
     count: 1 
     created: "2011-03-01T23:24:18Z" 
     lang: "en-US" 
     results: Object 
      beneficiary: Object 
       id: Object 
       name: "INTERNATIONAL FELLOWSHIP OF CHRISTIANS & JEWS" 
       recent-facebook-donors: "time1297716630facebook_id0nameRobert \ 
      Alan Schoonoveramount200time1297372019facebook_id0nameCurtis En…" 
       total-causes: Object 
       total-donors: Object 
       total-members: Object 
       total-raised: Object 
      __proto__: Object 
     __proto__: Object 
    __proto__: Object 
__proto__: Object 
+0

@miku ... 감사합니다! – TikaL13

+0

죄송 합니다만, 결과가 확실하지 않습니다. – TikaL13

+0

위의 코드를 업데이트합니다. 스 니펫을 단계별로 디버깅하여 * 어디에서 * 실패하는지 확인합니다. 예 : 첫 번째 버전에서는'callback' 쿼리 매개 변수의 결과로 정의되지 않은 오류가 발생했습니다.이 매개 변수는 여기서 볼 수있는 한 여기서는 필요하지 않습니다. – miku

관련 문제