【发布时间】:2018-03-18 17:58:40
【问题描述】:
我能够使用 Node.js 从 Azure 表中获取、发布、放置和删除数据。
但是,在我不能使用 Node.js 的地方,要求发生了变化,我需要使用纯 JavaScript 或 jQuery 解决方案(例如 Ajax)来针对 Azure 表端点执行我的 REST 查询。
我可能需要正确的标头、授权和可能的 SaS...但在 Internet 上没有找到任何纯 Ajax(不是 .NET,而是纯 JavaScript 文件)或纯 JavaScript 解决方案的示例。
例如,我可以访问非 Azure 表端点,例如通用 REST 表并返回结果,但是当我将其设置为 Azure 表端点时,我得到了预期的 403 授权失败,因为我没有通过授权/不确定在哪里设置和正确的标题:
<div id="jsondatahere" ></div>
<script>
yourUrl = 'https://myaccount.table.core.windows.net/myTable()'
function Get(yourUrl){
var Httpreq = new XMLHttpRequest(); // a new request
Httpreq.open("GET",yourUrl,false);
Httpreq.send(null);
return Httpreq.responseText;
}
var json_obj = JSON.parse(Get(yourUrl));
console.log(json_obj);
console.log("this is the author name: "+json_obj.clientName);
document.getElementById("jsondatahere").innerHTML = json_obj.clientName;
</script>
使用我的示例或 jQuery Ajax,是否有人有示例说明如何设置授权以便我可以获取、发布、放置、删除?
更新:
我可以查询我的表,但在输出节点的值时遇到问题,因为我习惯使用 JSON。
<div id="jsondatahere" ></div>
<!-- Browersify version of Node Azure Storage Files -->
<script src="https://one.rackspace.com/download/attachments/303335292/azure-storage.common.js"></script>
<script src="https://one.rackspace.com/download/attachments/303335292/azure-storage.table.js"></script>
<script>
var tableUri = 'https://minenotyours.table.core.windows.net';
var tableService = AzureStorage.createTableServiceWithSas(tableUri, '?sv=2016-05-31&tn=myInfo&sig=DQKSL13Z%2BF9Xp3WQaBtnEpyWADw9ggWqiwhvcE6YRXE%3D&se=2017-10-10T22%3A05%3A14Z&sp=raud');
var tableQuery = new AzureStorage.TableQuery().top(200);
tableService.queryEntities('myInfo', tableQuery, null, function(error, results, response) {
if (error) {
// Query entities error
console.log(error);
} else {
for (var i = 0, entity; entity = results.entries[i]; i++) {
// Deal with entity object
console.log(entity); // Returns whole object
console.log(entity.clientName); // Returns [object Object] > clientName
console.log(response.body.value[0].clientName); // Returns Value as expected
document.getElementById("jsondatahere").innerHTML = response.body.value[0].clientName; // Outputs value to HTML
}
}
});
</script>
使用上述方法,如何输出 entity.clientName 的 XML 值?
【问题讨论】:
-
CORS 支持似乎适用于表:blogs.msdn.microsoft.com/windowsazurestorage/2013/11/27/… 我还刚刚检查了界面,并在我的存储帐户的“表服务”下列出了 CORS
-
啊,很高兴知道这一点。那我就删掉之前的评论。我正在寻找您如何使用 JS 进行身份验证并找到了这个库,希望它有一些用处:dmrelease.blob.core.windows.net/azurestoragejssample/samples/…
-
是的!这是一个很好的开始!
标签: javascript jquery ajax azure azure-storage