Запрос данных JSON из хранилища BLOB-объектов Azure с помощью jQuery - PullRequest
3 голосов
/ 30 марта 2011

У меня есть некоторые данные в хранилище BLOB-объектов Azure. Данные в формате JSON, и они были сохранены с типом контента «application / json».

Мое приложение будет размещено на «myapp.com», домене, который содержит CNAME для «myapp.cloudapp.net». Думаю, мне нужно создать собственное доменное имя, например «storage.myapp.com», которое будет привязано к моему хранилищу Azure.

Но тогда? Могу ли я использовать JSONP или другой способ для выполнения вызовов JSON ajax в хранилище Azure?

Как лучше это сделать?

Большое спасибо.

Ответы [ 2 ]

8 голосов
/ 31 марта 2011

Ну, очевидно, хранилище BLOB-объектов Azure не поддерживает JSONP сразу, но это можно сделать.

Например, если я сохраню этот JSON в BLOB-объекте Azure:

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

Тогда dataCallBack будет выполнено :) Недостатокв том, что имя функции обратного вызова должно быть прописано, но это лучше, чем ничего.

Счастливых дней, но если бы у кого-то был лучший способ, было бы здорово.

Приветствия.

2 голосов
/ 31 марта 2011

Интерфейс REST Windows Azure Blob Storage возвращает XML (POX), а не JSON ... Однако сделать запрос из JavaScript просто! Вызовите URL контейнера с помощью restype = container и comp = list:

$(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 />');
    });
}

Я проверил это на HTML-странице, которая сама хранилась как BLOB-объект.

К сожалению, я боюсь, что JavaScript "Same Origin Policy" сделает это довольно трудным для использования на практике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...