3

Azure BLOB ストレージにいくつかのデータがあります。データは JSON であり、「application/json」コンテンツ タイプで保存されています。

私のアプリは、「myapp.cloudapp.net」への CNAME を含むドメイン「myapp.com」でホストされます。Azure ストレージを指す "storage.myapp.com" のようなカスタム ドメイン名を作成する必要があると思います。

しかしその後?JSONP またはその他の方法を使用して、Azure ストレージへの JSON ajax 呼び出しを行うことはできますか?

これを行うにはどうすればよいでしょうか?

どうもありがとう。

4

2 に答える 2

9

どうやら、Azure BLOBストレージはJSONPをすぐにはサポートしていませんが、サポートすることはできます。

たとえば、このJSONをAzure BLOBに格納すると、次のようになります。

{"Name":"Valeriano","Surname":"Tortola"}

そして私は試してみます:

<script type="text/javascript">

    $.getJSON("https://myaccount.blob.core.windows.net/jsonptests/data?jsoncallback=?",
             function (data) {
                 alert(data.Name);
             });
</script>

動作しません。実際、ブラウザはデータをダウンロードしますが、コールバックはありません。したがって、JSONPがどのように機能するかを考えると、このJSONをコールバック関数で保存すると次のようになります。

dataCallback({"Name":"Valeriano","Surname":"Tortola"})

そして私はします:

<script type="text/javascript">

    function dataCallback(data) {
        alert(data.Name);
    }
</script>

<script type="text/javascript" src="https://myaccount.blob.core.windows.net/jsonptests/data"></script>

次に、dataCallBackgetが実行されます:)欠点は、コールバック関数名をハーコード化する必要があることですが、何もないよりはましです。

幸せな日々ですが、誰かがもっと良い方法を持っていれば素晴らしいでしょう。

乾杯。

于 2011-03-30T20:23:41.833 に答える
2

Windows Azure Blob Storage の REST インターフェイスは、JSON ではなく XML (POX) を返しますが、JavaScript から簡単にクエリを実行できます。restype=container および comp=list を使用してコンテナー URL を呼び出します。

$(document).ready(function () {         
    // Retrieve list of Blobs
    var containerUrl = 'http://tcontepub.blob.core.windows.net/json/';
    $.ajax({
        type: 'GET',
        url: containerUrl + '?restype=container&comp=list',
        dataType: 'xml',
        success: listBlobs
    });
});

次に、返された XML の基本的な解析を実行できます。ここでは、URL を抽出して div に表示します。

function listBlobs(xml) {
    $(xml).find('Blob').each(function() {
        var url = $(this).find('Url').text();
        $('#panel').append(url + '<br />');
    });
}

それ自体が Blob として保存された HTML ページでこれをテストしました。

残念ながら、JavaScript の「Same Origin Policy」により、これを実際に使用することはかなり困難になると思います。

于 2011-03-31T10:48:45.757 に答える