我在 Azure blob 存储中有一些数据。数据为 JSON,并以“application/json”内容类型保存。
我的应用程序将托管在“myapp.com”上,这是一个包含“myapp.cloudapp.net”的 CNAME 的域。我想我应该创建一个指向我的 Azure 存储的自定义域名,例如“storage.myapp.com”。
但是之后?我可以使用 JSONP 或其他方式对 Azure 存储进行 JSON ajax 调用吗?
如何更好地做到这一点?
非常感谢。
我在 Azure blob 存储中有一些数据。数据为 JSON,并以“application/json”内容类型保存。
我的应用程序将托管在“myapp.com”上,这是一个包含“myapp.cloudapp.net”的 CNAME 的域。我想我应该创建一个指向我的 Azure 存储的自定义域名,例如“storage.myapp.com”。
但是之后?我可以使用 JSONP 或其他方式对 Azure 存储进行 JSON ajax 调用吗?
如何更好地做到这一点?
非常感谢。
好吧,显然 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>
然后dataCallBack
执行 :) 缺点是必须对回调函数名称进行编码,但总比没有好。
快乐的日子,但如果有人有更好的方法,那就太好了。
干杯。
Windows Azure Blob 存储 REST 接口返回 XML (POX),而不是 JSON...但是从 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 页面中对此进行了测试。
Unfortunately, I'm afraid the JavaScript "Same Origin Policy" will make this fairly difficult to use in practice.