Javascript 返回未定义的XMLHttpRequest
我试图通过我的函数发送此HTTP请求,但无论发生什么情况,它都返回未定义 这是一个非常基本的要求,我不明白为什么会发生这种情况 如果我将URL复制并粘贴到浏览器中,它就会工作并显示所需的JSON 我在浏览器的控制台上使用随机id和api键尝试了这个函数,但仍然返回未定义的值Javascript 返回未定义的XMLHttpRequest,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,我试图通过我的函数发送此HTTP请求,但无论发生什么情况,它都返回未定义 这是一个非常基本的要求,我不明白为什么会发生这种情况 如果我将URL复制并粘贴到浏览器中,它就会工作并显示所需的JSON 我在浏览器的控制台上使用随机id和api键尝试了这个函数,但仍然返回未定义的值 function getSummary(id){ let url2=`https://api.spoonacular.com/recipes/${id}/summary?apiKey=${key}`; let
function getSummary(id){
let url2=`https://api.spoonacular.com/recipes/${id}/summary?apiKey=${key}`;
let xhr2=new XMLHttpRequest();
xhr2.responseType='json';
xhr2.onreadystatechange=()=>{
if(xhr2.readyState==XMLHttpRequest.DONE){
return xhr2.response;
}
}
xhr2.open('GET',url2);
xhr2.send();
}
您在arrow函数内部使用return语句,但它不会从main函数中返回
xhr2.onreadystatechange=()=>{
//returns out of this function ^
if(xhr2.readyState==XMLHttpRequest.DONE){
return xhr2.response;
}
}
您不需要创建函数来返回响应文本,而是需要使用响应文本作为参数运行函数:
let url2=`https://api.spoonacular.com/recipes/${id}/summary?apiKey=${key}`;
let xhr2=new XMLHttpRequest();
xhr2.responseType='json';
xhr2.onreadystatechange=()=>{
if(xhr2.readyState==XMLHttpRequest.DONE){
//seperate function
run(xhr2.response);
}
}
xhr2.open('GET',url2);
xhr2.send();
function run(text){
console.log(text);
};
我按照API文档的指示将其包含在url中,同样:在浏览器的url栏中粘贴url会返回所需的结果,但函数中的http请求不会