javascript - Node js - React:获取API请求不返回任何数据
问题描述
我正在尝试fetch
通过 API 请求获取研究船的一些信息。我正在尝试使用AIS Hub中的 API 。在遵循他们的文档并应用简单的请求后,例如:
http://data.aishub.net/ws.php?username=USERNAME&format=1&output=json&compress=1
我仍然无法获得任何数据作为回报。在我的终端上启动 a 后python -m SimpleHTTPServer 8000
,我获得以下输出:
在 0.0.0.0 端口 8000 上提供 HTTP ...
127.0.0.1 - - [2020 年 1 月 24 日 12:16:16] “GET / HTTP/1.1” 200 -
127.0.0.1 - - [24/Jan/2020 12:16:16]“GET /boat.css HTTP/1.1”200 -
127.0.0.1 - - [2020 年 1 月 24 日 12:16:16]“GET /boat.js HTTP/1.1”200 -
我知道此时fetch
可能无法正常工作。我也不确定我是否正确提出了请求。如果这里有用的话,那就是 Sample 选项卡,它显示了数据的结构。
在我正在使用的示例代码下方:
const btnSearch = document.getElementById('btnSearch');
const txtSearch = document.getElementById('boat');
const resultArea = document.getElementById('result');
let out = '';
btnSearch.onClick = function() {
var searchTerm = txtSearch.value;
const url = `http://data.aishub.net/ws.php?username=USERNAME&format=1&output=json&compress=3&latmin=20.5&latmax=30.8&lonmin=-15&lonmax=18.6=${searchTerm}`;
console.log(url);
fetch(url)
.then(function(data) {
console.log(data);
return data.json();
})
.then(function(jsonObject) {
console.log('Read This??????');
console.log(jsonObject);
for (boat in jsonObject) {
const boatInfo = new Array(
jsonObject[boat].mmsi,
jsonObject[boat].time,
jsonObject[boat].longitude,
jsonObject[boat].latitude,
jsonObject[boat].cog,
jsonObject[boat].sog,
jsonObject[boat].heading,
jsonObject[boat].navsat,
jsonObject[boat].imo,
jsonObject[boat].name,
jsonObject[boat].callsign,
jsonObject[boat].type,
jsonObject[boat].a,
jsonObject[boat].b,
jsonObject[boat].c,
jsonObject[boat].d,
jsonObject[boat].draught,
jsonObject[boat].dest,
jsonObject[boat].eta
);
boatOut(boatInfo);
console.log(boatInfo);
}
resultArea.innerHTML = out;
})
.catch(function(e) {
console.log('Error' + e);
});
};
function boatOut(boat) {
console.log(boat);
out += `<div class="boat">
<div class="boatText">
<h2>${boat[9]}</h2>
<h3>${boat[1]}</h3>
<p><em>${boat[8]}</em></p>
</div><!-- boatText -->
</div><!-- boat -->`;
}
到目前为止我做了什么:
我正在研究官方文档并尝试了列出的 API 的不同组合。我试图在网上寻找潜在的例子,但我找不到任何特别的东西。这个 API 的工作方式对我来说有点难以理解,因为它不同于其他应用程序(例如食谱、食物等)可以找到的通常类型。我的想法不多了,因为我不知道还有什么可以尝试的。谢谢,如果有人已经发现这种情况并且可以指出解决问题的正确方向。
解决方案
看起来有几个问题。该网址似乎格式不正确。我看到您正在使用您提供的“官方文档”链接中的测试网址。请从 url 的末尾删除模板文字。您的网址如下所示: const url = http://data.aishub.net/ws.php?username=USERNAME&format=1&output=json&compress=3&latmin=20.5&latmax=30.8&lonmin=-15&lonmax=18.6=${searchTerm};
出于格式原因,我删除了反引号。删除模板文字后,您将不再需要反引号并可以切换到引号。现在您的 url 应该如下所示:const url = "http://data.aishub.net/ws.php?username=USERNAME&format=1&output=json&compress=3&latmin=20.5&latmax=30.8&lonmin=-15&lonmax=18.6";
它基于您的 onclick 函数从未运行的评论显示。这是由于在 onclick 中使用了驼峰式大小写。你有: btnSearch.onClick = function() {
。请将其更改为btnSearch.onclick = function() {
注意 onClick 现在是 onclick。在 js 中使用 onclick 时必须全部小写。
推荐阅读
- vb.net - 将数据从数据库拆分到 3 个组合框
- python - 如何将 python 脚本(使用 Pandas、numpy 和各种其他第三方库)集成到 C# 应用程序中?
- php - PHP & AJAX | 如何使用 PHP MVC 向控制器发送 AJAX 发布请求?
- intellij-idea - “自从 Intellij 更新以来,Kubernetes 上的开发停止工作”
- python - 使用python执行变量的相关性
- matrix - sympy 中的符号矩阵,打印跟踪并生成 C 代码
- python - 自定义类型的python列表构造函数 - 长度被调用两次
- excel - 如何扩展此宏的条件以查找 2 个字符串值?
- dynamics-crm - 检索实体类型支持的消息
- jquery - JQuery 动态对象名称