0

無料のdrop.ioアカウントを使用して、ドロップ内のアセットのリストを(JSON 経由で)取得しようとしています。

これに関する他の 2 つの質問 ( question1question2 )は既に確認しましたが、どちらも解決策を提供していないことに注意してください。

    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");
    });

ページの検索ボタンをクリックすると、getFileList() 関数がトリガーされます。私のfirebugコンソールによると、 getFileList() 関数は問題なく呼び出されます。

drop.io のサイトで assets.json を呼び出すと、firebug コンソールの [Net] タブに 200OK ステータスが表示されるため、JSON リクエストも正常に行われます。また、[ネット] タブのリクエスト リストに次の JSON が返されます。

    [{"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"}]

JSONLintを使用して返された JSON の上記のブロックを検証したところ、返された JSON が実際に有効であることが報告されました。上記のブロックをコピーして貼り付けることで、これをテストできます。

$.ajaxSetupメソッドに「エラー」オプションを追加しましたが、コールバック関数が実行されていない理由に関するエラーメッセージさえ返すことにまだ成功していません呼ばれた。

なぜこれが考えられるのでしょうか?ここで私のスクリプトをテストできます

4

1 に答える 1

2

JSONP では、サーバーが JSONP 要求をサポートする必要があります。しかし、あなたが訪問した場合

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

返されたドキュメントは、コールバックのために次のように見える[{"converted..)はずですが、次のように見えます。x([{"converted"..)x

どうやらdrop.ioは JSONP をサポートしていないようです (ドキュメントにもそうは書かれていません)。あなたに残されている唯一のオプションは、クロスドメイン js への古典的なアプローチであるUse a Proxyです。

于 2009-10-14T15:49:40.687 に答える