当前位置: 首页 > 知识库问答 >
问题:

使用CLICK事件侦听器提取Javascript API:尝试提取资源时的TypeError:NetworkError

姚洲
2023-03-14

我想单击一个按钮来使用JavaScript Fetch显示API数据,但在尝试获取资源时遇到了TypeError:NetworkError的麻烦。

我认为这与HTML表单有关。如果有人能帮我这个。我正试着从NASA的API中获取数据。

var search = document.getElementById("search");
 search.addEventListener("click",function(){
 //var startdate = document.getElementById("starter");
 //var enddate = document.getElementById("enddate");
 var url = "https://api.nasa.gov/planetary/apod?api_key=key"; 
  fetch(url,{
      method:"GET",
      headers:{
          "Content-Type":"application/json"
      },
      mode:"cors",
      catch:"default"
  }).then(function(response){
       if(response.ok){
           return response.json();
       }else{
           throw new Error(Error);
       }
   }).then(function(data){
       console.log(data);
   }).catch(function(error){
       console.log(error);
   });
 });

下面是HTML表单

<form>
 <input type="date" id="startdate" placeholder="enter a start date"><br>
<input type="date" id="enddate" placeholder="enter a start date"><br>
<button type="submit" id="search">Search</button>
</form>

谢谢

共有1个答案

瞿健
2023-03-14

试试看,我已经添加了event.preventdefault()这将阻止页面刷新。另外,不要忘记使用服务提供商提供的适当的API密钥。

 var search = document.getElementById("search");
 search.addEventListener("click",function(event){
 event.preventDefault();
 //var startdate = document.getElementById("starter");
 //var enddate = document.getElementById("enddate");
 var url = "https://api.nasa.gov/planetary/apod?api_key=key"; 
  fetch(url,{
      method:"GET",
      headers:{
          "Content-Type":"application/json"
      },
      mode:"cors",
      catch:"default"
  }).then(function(response){
       if(response.ok){
           return response.json();
       }else{
           throw new Error(Error);
       }
   }).then(function(data){
       console.log(data);
   }).catch(function(error){
       console.log(error);
   });
 });
 类似资料:
  • 我目前正在尝试编写一些JavaScript来获取已单击的类的属性。我知道要正确地执行此操作,我应该使用事件监听器。我的代码如下: 我希望每次点击其中一个类时都有一个警告框来告诉我该属性,但不幸的是,这并不起作用。有人能帮忙吗?

  • 我得到这个问题: 这就是它指向的地方 我正在尝试制作一个后端有express,前端有Webpack的应用程序。我在后端有一个Rest API,不能在前端使用。 我将Ubuntu与Mozilla Firefox 66.0.2和Nodejs 11.13.0结合使用 当我使用控制台时,它说问题出在它上面

  • 我发现了很多与我的问题类似的问题,但我没有得到解决方案,这就是为什么我在这里问。 我刚刚开始学习使用React进行前端开发。我已经为在不同端口运行的前端和后端制作了单独的应用程序。 后端:Laravel框架应用程序运行于 前端:在运行的React应用程序 我有一张这样的表格: 我一直在沿着路线走, 这里是 CORS 中间件, 最后这里是用户创建函数 当我从反应应用程序发送帖子请求时,控制台显示以下

  • 是否可以将传统的事件监听器重构为Java8流,从而使监听器事件成为流源? 客户端提交任意作业,然后侦听结果: 对于提交的任何作业,客户端都会收到n个结果,但它不知道会收到多少个结果(它使用来确定何时停止和聚合)。 我想将侦听器重构为“供应商”或类似的东西,例如是流源: 诸如此类;如果我能在客户不知道预期结果的情况下做到这一点,我就是黄金;现在,返回void,我希望保持这种方式,但我也对选项持开放态

  • 我在中有一个JSON文件,我试图用以下方式读取该文件: 但是,InputStream为空。 这是我传递的文件路径: 我做错了什么?

  • 我是JMS新手,正在尝试使用Glassfish应用服务器执行我第一个JMS程序。 我在Glassfish管理控制台中创建了连接工厂[JMS/MyQueueFactory]和目标资源[JMS/MyQueue],如下所示: 以下是我的代码: 请让我知道我在这里错过了什么。 多谢了。