Retorno de chamada não sendo executado, embora a solicitação funcione bem com o jQuery getjson

StackOverflow https://stackoverflow.com/questions/1567108

  •  21-09-2019
  •  | 
  •  

Pergunta

estou tentando obter uma lista de ativos (via JSON) dentro de uma gota usando um grátis Drop.io conta.

Observe que eu já vi as outras duas perguntas (questão 1 e Questão 2) sobre isso e nenhum deles forneceu uma solução.

    var dropName = escape("greganddonny");
            var apiKey = "some key I'm not displaying it here...";
            var version = "2.0";

    var assetsListBaseURL = "http://api.drop.io/drops/greganddonny/assets.json?api_key=" + apiKey + "&version=" + version;

    var resultingdata = null;

    function getFileList() {
        console.log("BEGIN: getFileList()");
        var surl = assetsListBaseURL + '&callback=?';

        $.getJSON(surl, function(data, textStatus) {
            console.log("textStatus:" + textStatus);
            console.log("BEGIN: Callback()");
            resultingdata = data;
            showResult();
            console.log("END: Callback()"); 
    });

        console.log("END: getFileList()");
    }

    function showResult()
    {
        alert(resultingdata);
    }

    $(document).ready(function() {
        console.log("BEGIN: document.ready");
            $.ajaxSetup({
            "error": function(XMLHttpRequest,textStatus, errorThrown) {   
              alert(textStatus);
              alert(errorThrown);
              alert(XMLHttpRequest.responseText);
              }
            })

            $("#search").click(function() {getFileList();});
        console.log("END: document.ready");
    });

Quando o botão de pesquisa na página é clicado, este desencadeia a função getFileList (). De acordo com o meu console do Firebug, a função getFileLelist () é chamada de bom.

A solicitação JSON também é feita com sucesso, pois a guia líquida do console do Firebug exibe um status de 200OK quando eu chamo Assets.json no site do Drop.io. Também recebo o seguinte JSON de retorno na lista de solicitações na guia "Net":

    [{"converted":"http:\/\/drop.io\/download\/public\/x0yfnmzdtet1vtxesqcm\/12a9ebc74c9a3e4e3b2e2b4ea3546b919a2519ff\/df43d2b0-926f-012c-26c2-fbe072d62af6\/2a0a5270-9270-012c-8fc9-fbfd417303a8\/v2\/content","type":"audio","status":"converted","title":"MikeAndAndyOnPhone2009.MP3","duration":118,"artist":"Unknown","created_at":"2009/10/03 17:29:02 +0000","filesize":1895424,"description":null,"track_title":"Unknown","hidden_url":"http:\/\/drop.io\/hidden\/sazpcf7522exzb\/asset\/bWlrZWFuZGFuZHlvbnBob25lMjAwOS1tcDM=","name":"mikeandandyonphone2009-mp3"}]

Eu validei o bloco acima do JSON devolvido usando JSONLINT E relata que o JSON retornou é realmente válido, você pode testá -lo copiando e colando o bloco acima.

Eu tentei tudo o que sei como tentar, até adicionei uma opção de "erro" ao método $ .ajaxsetup e ainda não tive sucesso retornando nem mesmo uma mensagem de erro sobre por que minha função de retorno de chamada não está sendo chamado.

Alguma idéia de por que isso pode ser? Você pode testar meu script aqui

Foi útil?

Solução

O JSONP exige que o servidor suporte solicitações JSONP. No entanto, se você visitar

http://api.drop.io/drops/greganddonny/assets.json?api_key=API_KEY_HERE&version=2.0&callback=x

o documento retornado se parece [{"converted..) Embora deva parecer x([{"converted"..) por causa do x ligue de volta.

Aparentemente Drop.io Não suporta o JSONP (a documentação também não indica). A única opção que resta para você é a abordagem clássica do Domain JS: Use um proxy.

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