我可以使用Node.js从Azure表中获取,发布,放置和删除数据。
但是,在我无法使用Node.js的情况下,需求已经发生变化,我需要使用纯JavaScript或jQuery解决方案(例如Ajax)来针对Azure Table Endpoint执行REST查询。
我可能需要正确的标头,授权和可能的SaS ......但是在互联网上没有找到任何纯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值?
答案 0 :(得分:0)
使用Azure存储JavaScript库,我有我需要的工作。这是一个工作样本。请注意:作为最佳实践,我将在后端服务器上生成SaS令牌并使用createTableServicewithSaS选项。确保在Azure门户中设置Azure表的CORS:
<!-- Uses Azure Storage JavaScript Library - https://dmrelease.blob.core.windows.net/azurestoragejssample/samples/sample-table.html -->
<div id="jsondatahere" ></div>
<!-- Browersify version of Node Azure Storage Files -->
<script src="azure-storage.common.js"></script>
<script src="azure-storage.table.js"></script>
<script>
var tableService = AzureStorage.createTableService('mystorage', 'blahblahblahbalh==');
var tableQuery = new AzureStorage.TableQuery().top(200);
tableService.queryEntities('ClientInfo', 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);
console.log(entity.clientName._);
document.getElementById("jsondatahere").innerHTML += entity.clientName._;
}
}
});
</script>