Javascript API FETCH With CLICK Event Listener: TypeError: NetworkError when attempting to fetch resource
Javascript API FETCH With CLICK Event Listener: TypeError: NetworkError when attempting to fetch resource
我想单击一个按钮以使用 JavaScript Fetch 显示 API 数据,但在尝试获取资源时我遇到了 TypeError: NetworkError 的问题。
我认为这与 HTML 形式有关。如果有人可以帮助我。我正在尝试从 NASA APIs.
获取数据
JS代码如下
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>
谢谢
试试这个,我已经添加了 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);
});
});
您的提取请求不需要选项,
您还需要防止页面重新加载
这是一个完整的工作示例
var search = document.getElementById("search");
search.addEventListener("click", function(e) {
e.preventDefault();
fetch("https://api.nasa.gov/planetary/apod?api_key=key_obtained_from_nasa")
.then(function(response) {
if (response.ok) {
return response.json();
}
throw new Error();
}).then(result => console.log(result))
.catch(function(response) {
console.log('Error! Please try again');
});
})
<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>
我想单击一个按钮以使用 JavaScript Fetch 显示 API 数据,但在尝试获取资源时我遇到了 TypeError: NetworkError 的问题。
我认为这与 HTML 形式有关。如果有人可以帮助我。我正在尝试从 NASA APIs.
获取数据JS代码如下
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>
谢谢
试试这个,我已经添加了 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);
});
});
您的提取请求不需要选项, 您还需要防止页面重新加载
这是一个完整的工作示例
var search = document.getElementById("search");
search.addEventListener("click", function(e) {
e.preventDefault();
fetch("https://api.nasa.gov/planetary/apod?api_key=key_obtained_from_nasa")
.then(function(response) {
if (response.ok) {
return response.json();
}
throw new Error();
}).then(result => console.log(result))
.catch(function(response) {
console.log('Error! Please try again');
});
})
<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>