从包含页面的jsonp api中检索数据

时间:2016-09-01 11:33:34

标签: javascript jquery json jsonp

当数据在页面中分割时,我对如何从 jsonp api 检索所有数据感到有些困惑。回调看起来像这样:

{
entries: [],
page: 1,
pages: 101,
posts: 10054
}

下面的代码只能从第1页获得结果,但我想从所有101页获得结果。如果我向网址添加一个查询,例如:&page=2&page=3我只能访问该网页中的对象,我试图访问所有网页中的所有对象一次性... .. 会很感激一些帮助:)

$.getJSON('http://hotell.difi.no/api/jsonp/mattilsynet/smilefjes/tilsyn?callback=?', function(data){

var html = "";

$.each(data.entries, function(key,value){
    html += '<p>' + value.navn + '</p>';
})

$('#test').html(html);

})

2 个答案:

答案 0 :(得分:2)

您可以先拨打电话获取页数,然后在下一个电话中循环播放。 请尝试下面的代码

$.getJSON('http://hotell.difi.no/api/jsonp/mattilsynet/smilefjes/tilsyn?callback=?', function(data) {
  var pages = data.pages;
  for (var i = 1; i <= data.pages; i++) {
    $.getJSON('http://hotell.difi.no/api/jsonp/mattilsynet/smilefjes/tilsyn?callback=?&page=' + i, function(data) {

      $('#test').append("Page " + data.page + " Data >> ");

      var html = "";
      $.each(data.entries, function(key, value) {
        html += '<p>' + value.navn + '</p>';
      })
      $('#test').append(html);
    });
  }

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test">
</div>

答案 1 :(得分:0)

您可以使用$ .ajax()而不是$ .getJSON()来使用jsonp。你必须在你的javascript代码中声明你的回调方法

$("#btn").click(function(){
$.ajax({
        url: "http://hotell.difi.no/api/jsonp/mattilsynet/smilefjes/tilsyn?callback=myJsonpCallbackMethod",
        dataType: "jsonp",
        success: function( response ) {
            //console.log( response ); // server response
        }
    });
});

function myJsonpCallbackMethod(data){
  alert("Hello");
  console.log( data ); // server response
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<button id="btn">Click Me</button>