javascript - 使用 ajax 调用瑞典统计局公共(public) API 中的 json 数据时出现问题

标签 javascript jquery json opendata

希望获得帮助来识别我对瑞典统计局 (SCB) 的 ajax 调用的问题。
SCB API instructions are here

我可以通过以下调用成功获取表元数据(说明中的步骤 4.3)

$.ajax({
    url: "http://api.scb.se/OV0104/v1/doris/en/ssd/BE/BE0401/BE0401B",
    type: "POST",
    dataType: 'json',
    success: function(response) {
        console.log(response);
    },
    error: function(xhr) {
        console.log(xhr.statusText)
    }
});

但是,当我尝试使用 POST 请求查询表时,我收到 404 错误未找到。
(示例取自说明中的步骤 4.4 - PDF 第 7 页的下半部分)

或者,如果我尝试使用 GET 请求,我只会获取表元数据,但没有结果

$.ajax({
    url: "http://api.scb.se/OV0104/v1/doris/en/ssd/BE/BE0401/BE0401B/BefProgFoddaMedel15",
    data: {
        "query": 
           [{"code":"Fodelseland", "selection":{"filter":"item",
           "values":["010","020"]}},
           {"code":"Alder", "selection":{"filter":"all", "values":["*"]}},
           {"code":"Tid", "selection":{ "filter":"top", "values":["3"]}}],
         "response": {"format":"json"}
    },
    type: "POST",  // GET returns only table metadata
    dataType: 'json',
    success: function(response) {
        console.log(response);
    },
    error: function(xhr) {
        console.log(xhr.statusText)
    }
});

编辑
补充说也尝试使用 GET 请求,但只返回表元数据而不返回统计信息

解决方案
在发布之前对查询数据调用 JSON.stringify。
下面发布的代码由 Petros Likidis

最佳答案

我不是 javascript 专家,但我也遇到过同样的问题。我通过调用 JSON.stringify 将 json 查询(发布数据)转换为字符串来解决这个问题,请参阅

http://jsbin.com/punaveteke/edit?js,console,output

$(document).ready(function () {

    $.ajax({
        type: "POST",
        url: "http://api.scb.se/OV0104/v1/doris/en/ssd/BE/BE0401/BE0401B/BefProgFoddaMedel15",
        data: JSON.stringify({
            "query": [{
                "code": "Fodelseland",
                "selection": {
                    "filter": "item",
                    "values": ["010", "020"]
                }
            }, {
                "code": "Alder",
                "selection": {
                    "filter": "all",
                    "values": ["*"]
                }
            }, {
                "code": "Tid",
                "selection": {
                    "filter": "top",
                    "values": ["3"]
                }
            }],
            "response": {
                "format": "json"
            }
        }),
        dataType: "json",
        success: function (response) {
            console.log(response);
        },
        error: function (xhr) {
            console.log(xhr.statusText)
        }
    });
});

关于javascript - 使用 ajax 调用瑞典统计局公共(public) API 中的 json 数据时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43252933/

相关文章:

javascript - 电子邮件表格未发送

jQuery 删除除当前选项之外的选项

JavaScript 将一些数据包装到 json 数组中

mysql - 检查mysql表中json的json_contains

javascript - 单击鼠标调整多个 div 的大小

javascript - 如何在未设置大小的情况下获取具有多个属性集的 HTML 选择标记的可见选项数?

javascript - typescript 类装饰器 : typing properties defined in decorator function

javascript - Img one ('load' , ...) 并不总是在 IE 中触发 - 我放弃了

javascript - 如何打开第二个灯箱

javascript - AngularJS 和多个 $http 查询的逻辑问题