2013-05-12 82 views
5

我正在使用的公司擁有其隱私權政策和使用條款的API。我需要創建兩個不同的頁面......一個用於隱私政策,一個用於使用條款。我在這方面很新穎,我覺得我很接近如何從外部URL獲取JSON數據?

下面是該JSON收到(有一些編輯匿名處理)的方式:

{"code":200,"status":"Ok","data": 
    {"offset":0,"limit":20,"total":2,"target":"html_page","results":[ 
     { 
      "id":"6", 
      "title":"Privacy Policy", 
      "description":"Privacy Policy", 
      "html":"HTML CODE BLAH BLAH", 
      "tags":["privacy"] 
     }, 
     { 
      "id":"66", 
      "title":"License and TOU", 
      "description":"Terms of Use", 
      "html":"HTML CODE BLAH BLAH", 
      "tags":["terms"] 
     }] 
    } 
} 

下面是我使用的代碼:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="utf-8" /> 
<title>Privacy Policy</title> 
</head> 
<body> 
    <div id="placeholder"></div> 
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
    <script> 
    $.getJSON('http://externalurl.com', function(external) { 
     var output="<ul>"; 
     for (var i in external.code.offset) { 
      output+="<li>" + external.html + "</li>"; 
     } 

     output+="</ul>"; 
     document.getElementById("placeholder").innerHTML=output; 
    }); 
    </script> 
</body> 
</html> 

它只是返回一個空白頁。我究竟做錯了什麼?

回答

0

我覺得應該是:

$.getJSON('http://externalurl.com', function(external) { 
    var output="<ul>"; 
    for (var i = 0; i < external.data.results.length; i++) { 
     output+="<li>" + external.data.results[i].html + "</li>"; 
    } 

    output+="</ul>"; 
    document.getElementById("placeholder").innerHTML=output; 
}); 

所以首先你迭代錯了對象,這是external.data.results,而不是external.code.offset。其次,你不能遍歷數組for (var i in array)

3
$.getJSON('http://externalurl.com', function(external) { 
     var output = $("<ul />"); 

     $.each(external.data.results, function(i, result) { 
      $('<li />', {text : result.html}).appendTo(output); 
     }); 

     $('#placeholder').html(output); 
});