Javascript 我的提取请求被取消,我没有';我不知道为什么

Javascript 我的提取请求被取消,我没有';我不知道为什么,javascript,fetch,Javascript,Fetch,我正在创建一个使用API的web应用程序 当用户键入国家/地区时,我将使用fetch向API发出请求。然而,我的请求总是被取消 我测试了捕获用户输入的部分,但我认为问题在于我的fetch代码 var countryName;//这将在我的HTML文件的文本框中接收用户输入。 结果变量; 函数grabCountry(urlendpoint、countryName、endpointfields){ countryName=document.getElementById('searchInput')

我正在创建一个使用API的web应用程序

当用户键入国家/地区时,我将使用
fetch
向API发出请求。然而,我的请求总是被取消

我测试了捕获用户输入的部分,但我认为问题在于我的
fetch
代码

var countryName;//这将在我的HTML文件的文本框中接收用户输入。
结果变量;
函数grabCountry(urlendpoint、countryName、endpointfields){
countryName=document.getElementById('searchInput')。值;
var urlenpoint=https://restcountries.eu/rest/v2/name/';    
var endpointfields='?fields=topLevelDomain;alpha3Code;调用代码;替换拼写;子区域;填充;latlng;语言;标志';
获取(urlendpoint+countryName+endpointfields)
.然后(响应=>数据)
。然后(数据=>{
console.log(data())
})

}
您的
获取
代码在第一个
附近出现语法错误,然后关闭

var countryName;//这将在我的HTML文件的文本框中接收用户输入。
结果变量;
函数grabCountry(urlendpoint、countryName、endpointfields){
countryName=document.getElementById('searchInput')。值;
var urlenpoint=https://restcountries.eu/rest/v2/name/';    
var endpointfields='?fields=topLevelDomain;alpha3Code;调用代码;替换拼写;子区域;填充;latlng;语言;标志';
获取(urlendpoint+countryName+endpointfields)。然后(函数(数据){
console.log(数据)
})
}
国家(“”,“”)

到目前为止,您提供的代码工作正常。您需要检查如何获取数据。对于文本或解析json的
.json()

fetch('/url')
     .then(response => response.text())
     .then(data => console.log(data));
下面是一个演示:

var countryName;//这将在我的HTML文件的文本框中接收用户输入。
结果变量;
职能(国家){
countryName=‘保加利亚’;
var urlenpoint=https://restcountries.eu/rest/v2/name/';    
var endpointfields='?fields=topLevelDomain;alpha3Code;调用代码;替换拼写;子区域;填充;latlng;语言;标志';
获取(urlendpoint+countryName+endpointfields)
.then(response=>response.json())
.then(数据=>console.log(数据))
}

国家()
取消
fetch
调用的另一个原因可能是触发事件的HTML标记是HTML表单标记的子项(或孙子项)。在这种情况下,事件可能会触发将开始提交表单数据的表单,因此它将自然取消您的
fetch
调用

解决方案之一是对触发
fetch
调用的事件调用
preventDefault
函数。见下例:

function myFetchFunction(event) {
  event.preventDefault();
  fetch("https://my-url-here");
}

<button onclick="myFetchFunction">Fetch</button>
函数myFetchFunction(事件){
event.preventDefault();
取回(“https://my-url-here");
}
取来

为什么在调用此函数时重新声明理论上作为参数的变量?实际上我不知道,我正在开始学习JS nowDude,你是上帝!!但是,你知道什么是奇怪的吗?在我的本地主机上,获取请求被取消,但是当我从https主机()发出请求时,它就完成了!!!非常感谢,我现在正在完成应用程序,只需要处理响应并对用户xD表示友好