纯JavaScript或jQuery调用Azure表存储

时间:2017-10-06 21:16:17

标签: javascript jquery ajax azure azure-storage

我可以使用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值?

1 个答案:

答案 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>