希望获得帮助来识别我对瑞典统计局 (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/