【问题标题】:Pure JavaScript or jQuery Calls to Azure Table Storage对 Azure 表存储的纯 JavaScript 或 jQuery 调用
【发布时间】: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 值?

【问题讨论】:

标签: javascript jquery ajax azure azure-storage


【解决方案1】:

使用 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>

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 2019-08-04
    • 2011-09-18
    • 1970-01-01
    • 2023-03-15
    • 2013-06-08
    • 2020-06-05
    • 1970-01-01
    • 2018-01-11
    相关资源
    最近更新 更多