3

http://api.dailymile.com/entries.jsonから json データを取得しようとして います。次に、このデータを表に表示したいと思います。以下のコードは、json リンクが既にコンピューター上にあるファイルを指している場合は機能しますが、URL を参照している場合は機能しません。

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"> </script>
<script>

$(function() {

var entries = [];
var dmJSON = "http://api.dailymile.com/entries.json";
$.getJSON( dmJSON, function(data) {
   $.each(data.entries, function(i, f) {
      var tblRow = "<tr>" + "<td>" + f.id + "</td>" + "<td>" + f.user.username + "</td>" + "<td>" + f.message + "</td>" + "<td> " + f.location + "</td>" +  "<td>" + f.at + "</td>" + "</tr>"
       $(tblRow).appendTo("#entrydata tbody");
 });

});

});
</script>
</head>

<body>

<div class="wrapper">
<div class="profile">
<table id= "entrydata" border="1">
<thead>
        <th>ID</th>
        <th>UserName</th>
        <th>Message</th>
    <th>Location</th>
        <th>Time</th>
    </thead>
  <tbody>

   </tbody>
</table>

</div>
</div>

</body>

</html>

json データをロードしない理由についてのヘルプをいただければ幸いです。

4

2 に答える 2

4

aldux が示唆するように、JSON クロスドメインにアクセスする簡単な方法は、JSONP を使用することです。あなたの場合、サーバー (dailymile.com) は JSONP をサポートしているので、単純に ?callback=? を追加できます。あなたのURLへのパラメータ、すなわち

var dmJSON = "http://api.dailymile.com/entries.json?callback=?";
$.getJSON( dmJSON, function(data) {
   $.each(data.entries, function(i, f) {
      var tblRow = "<tr>" + "<td>" + f.id + "</td>" + "<td>" + f.user.username + "</td>" + "<td>" + f.message + "</td>" + "<td> " + f.location + "</td>" +  "<td>" + f.at + "</td>" + "</tr>"
       $(tblRow).appendTo("#entrydata tbody");
 });

});
于 2013-07-12T17:49:27.927 に答える