jsonp с jquery [закрыто]


89

Вы можете привести очень простой пример чтения jsonp-запроса с помощью jquery? Я просто не могу заставить его работать.

Ответы:


144

Вот рабочий пример:

<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>

Обратите внимание на ?callback=?значок в конце запрошенного URL. Это указывает getJSONфункции, которую мы хотим использовать JSONP. Удалите его, и будет использоваться обычный запрос JSON. Что не удастся из-за той же политики происхождения .

Вы можете найти дополнительную информацию и примеры на сайте JQuery: http://api.jquery.com/jQuery.getJSON/


2
Я пробовал $ .ajax с этими параметрами jsonp и не мог заставить это работать. В любом случае, это прекрасно работает, спасибо.
akula1001

2
Действительно ли ?callback=?отправляется как часть URL-адреса или это просто своего рода флаг, который jQuery видит и удаляет перед получением URL-адреса?
hippietrail

1
Что необходимо, если ваш URL требует параметров? (например: ?p=1&s=50)
ONDEV

2
Я нашел, что это хорошая отправная точка. Чтобы ответить выше: Да, обратный вызов отправляется как параметр и должен быть отправлен обратно как функция, обернутая вокруг ответа JSON. См. Stackoverflow.com/questions/7936610/… . Чтобы отправить дополнительные параметры, они отправляются во втором параметре getJSON () в приведенном выше примере. замените null на {p: 1, s: 50}
Ecropolis

Я получаю код ошибки 410 - пропал. Есть ли «вечно» существующая служба, возвращающая JSON где угодно? Просто чтобы проверить, работает ли собственный метод?
Конрад Вильтерстен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.