2013-01-05 25 views
6

Używam github API dla małej aplikacji internetowej iw pewnym momencie muszę uzyskać link header dla the pagination.Github API uzyskać nagłówek łącza z ajaxem

Ostatecznym celem jest uzyskanie całkowitej liczby zatwierdzeń na repozytorium, znalazłem, że python script i starałem się dostosować go do JavaScript.

getData = $.getJSON('https://api.github.com/repos/'+user+'/'+repo+'/commits?callback=?', function (commits){ 

    console.log(getData.getResponseHeader('link')) 
    // will return null 

    console.log(getData.getAllResponseHeaders('link')) 
    // will return an empty string 

    console.log(commits) 
    // will successfuly return my json 
}); 

user i repo są odpowiednio nazwa użytkownika i jego nazwa repo

To dla strony GitHub więc mogę użyć tylko JavaScript.

Odpowiedz

5

Zobacz docs API GitHub za korzystanie z wywołań zwrotnych jsonp: http://developer.github.com/v3/#json-p-callbacks

Zasadniczo, jeśli używasz jsonp zadzwonić API, wtedy nie dostać Link nagłówek, ale będzie zamiast dostać te same informacje w dokumencie JSON odpowiedzi (tj. treścią). Poniżej znajduje się przykład z docs API zauważyć właściwość Link w obiekcie meta

$ curl https://api.github.com?callback=foo 

foo({ 
    "meta": { 
    "status": 200, 
    "X-RateLimit-Limit": "5000", 
    "X-RateLimit-Remaining": "4966", 
    "Link": [ // pagination headers and other links 
     ["https://api.github.com?page=2", {"rel": "next"}] 
    ] 
    }, 
    "data": { 
    // the data 
    } 
}) 
+0

że jest doskonały, dzięki –

0

Podpis dla funkcji, którą przechodzą do sposobu getJSON jest Typ: funkcyjne (dane PlainObject, String textStatus, jqXHR jqXHR)

Aby uzyskać dostęp do nagłówka łącza należy użyć obiektu jqXHR zamiast obiektu danych:

getData = $.getJSON(
    'https://api.github.com/repos/'+user+'/'+repo+'/commits?callback=?', 
    function (data, textStatus, jqXHR){ 

     console.log(jqXHR.getResponseHeader('Link')) 
     // will return the Header Link 

     console.log(commits) 
     // will successfuly return my json 
    }); 
Powiązane problemy