Pergunta

$.getJSON() documentação estados:

Se o URL especificado está em um servidor remoto, a solicitação é tratada como JSONP vez. Veja a discussão sobre o tipo de dados jsonp em $ .ajax () para mais detalhes.

O $.ajax() documentação para os estados tipo de dados jsonp (grifo meu):

Cargas em um bloco JSON usando JSONP. irá adicionar um extra "? Callback =?" ao final do seu URL para especificar o callback .

Assim, parece que se eu chamar $.getJSON() com um URL entre domínios, o extra "callback =?" parâmetro deve automaticamente adicionadas. (Outras partes da documentação apoiar esta interpretação.)

No entanto, eu não estou vendo esse comportamento. Se eu não adicionar o "callback =?" explicitamente, jQuery incorrecta faz um XMLHttpRequest (que retorna nulo de dados desde que não pode ler a vários domínios de resposta). Se eu fizer adicioná-lo explicitamente, jQuery corretamente faz um

Outras dicas

Tente isto:

var URL = "http://www.geonames.org/postalCodeLookupJSON" +
    "?postalcode=10504&country=US";
function alertResponse(data, status) {
    alert("data: " + data + ", status: " + status);
}
$.ajax({
    url: URL,
    dataType: 'jsonp',
    jsonpCallback: 'alertResponse',
});

Sim, eu acho que você entendeu mal. $.getJSON é um atalho para $.ajax({datatype: 'json'.... como a documentação diz. Ele nunca faz uma chamada JSONP a menos que você adicione o parâmetro callback=?.

Eu estou usando o código abaixo,

$. Ajax ({ url: URL, dataType: 'jsonp', sucesso: function (dados) { // faça alguma coisa } error: function (jqXHR, textStatus, errorThrown) {}, jsonpCallback: 'login_callback', });

Mas, callback às vezes fica anexada ao final da URL e, por vezes, não no IE. Enquanto sua multa em cromo e FF trabalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top