jsonp com jquery [fechado]


89

Você pode dar um exemplo muito simples de leitura de uma solicitação jsonp com jquery? Eu simplesmente não consigo fazer funcionar.

Respostas:


144

Aqui está um exemplo de trabalho:

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

Observe o ?callback=?no final do URL solicitado. Isso indica para a getJSONfunção que queremos usar JSONP. Remova-o e uma solicitação JSON vanilla será usada. Que falhará devido à mesma política de origem .

Você pode encontrar mais informações e exemplos no site JQuery: http://api.jquery.com/jQuery.getJSON/


2
Eu estava testando $ .ajax com aqueles parâmetros jsonp e não consegui fazer isso funcionar. Enfim, isso funciona muito bem, obrigado.
akula1001

2
O ?callback=?realmente é enviado como parte do URL ou é apenas uma espécie de sinalizador que o jQuery vê e remove antes de buscar o URL?
hippietrail

1
O que é necessário se o seu URL requer parâmetros? (ex: ?p=1&s=50)
ONDEV

2
Achei que esta é uma boa referência como ponto de partida. Para responder acima: Sim, o retorno de chamada é enviado como um parâmetro e deve ser enviado de volta como uma função envolvida na resposta JSON. Consulte stackoverflow.com/questions/7936610/… . Para enviar parâmetros adicionais, eles são enviados no segundo parâmetro do getJSON (), no ex acima. substitua nulo por {p: 1, s: 50}
Ecrópolis

Recebo o código de erro 410 - desaparecido. Existe um serviço "eternamente" presente retornando JSON em algum lugar? Só para testar se o próprio método funciona?
Konrad Viltersten
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.