jsonp with jquery [zamknięte]

Odpowiedzi:

144

Oto działający przykład:

<html><head><title>Twitter 2.0</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head><body>
<div id='tweet-list'></div>
<script type="text/javascript">
$(document).ready(function() {
    var url =  "http://api.twitter.com/1/statuses/user_timeline/codinghorror.json";
    $.getJSON(url + "?callback=?", null, function(tweets) {
        for(i in tweets) {
            tweet = tweets[i];
            $("#tweet-list").append(tweet.text + "<hr />");
        }
    });
});
</script>
</body></html>

Zwróć uwagę ?callback=?na koniec żądanego adresu URL. Wskazuje to na getJSONfunkcję, której chcemy używać w formacie JSONP. Usuń go, a zostanie użyte zwykłe żądanie JSON. Która zakończy się niepowodzeniem z powodu tej samej zasady pochodzenia .

Więcej informacji i przykładów można znaleźć w witrynie JQuery: http://api.jquery.com/jQuery.getJSON/

Tomas Sedovic
źródło
2
Próbowałem $ .ajax z tymi parametrami jsonp i nie mogłem go uruchomić. W każdym razie, to ładnie działa, dzięki.
akula1001
2
Czy ?callback=?faktycznie jest wysyłany jako część adresu URL, czy jest to tylko rodzaj flagi, którą jQuery widzi i jest usuwana przed pobraniem adresu URL?
hippietrail
1
Co jest konieczne, jeśli Twój adres URL wymaga parametrów? (np. ?p=1&s=50)
ONDEV
2
Uznałem, że to dobre odniesienie jako punkt wyjścia. Aby odpowiedzieć powyżej: Tak, wywołanie zwrotne jest wysyłane jako parametr i powinno zostać odesłane jako funkcja owinięta wokół odpowiedzi JSON. Zobacz stackoverflow.com/questions/7936610/… . Aby przesłać dodatkowe parametry, są one wysyłane w drugim parametrze metody getJSON (), w powyższym przykładzie. zamień wartość null na {p: 1, s: 50}
Ecropolis
Wyświetla się kod błędu 410 - zniknął. Czy istnieje „wiecznie” obecna usługa, która zwraca gdziekolwiek JSON? Tylko po to, aby sprawdzić, czy własna metoda działa?
Konrad Viltersten