我正在尝试使我的第一个vue.js应用程序正常工作。至少我可以使用以下代码对结果200进行“获取”(某种程度上是成功的):
fetch("validate-recaptcha.php", {
method: "post",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
//make sure to serialize your JSON body
body: JSON.stringify({
name: "myName",
password: "myPassword"
})
})
.then((response) => {
//do something awesome that makes the world a better place
if (response.status == 200) {
alert(response.statusText + " " + response.responseText);
}
else {
alert("Error: " + response.statusText);
}
});
,但不清楚为什么response.responseText未定义。如果我在浏览器中打开the URL I query,则会显示以下信息:
{"secret":"yoursecretkey","remoteip":"97.33.22.522"}
因此至少内容不是空的,但是JavaScript显示消息“ OK undefined”。
链接:
答案 0 :(得分:2)
fetch()
产生的 Response没有responseText
属性,因此undefined
。您可以使用响应上的方法json()
从响应中提取JSON数据。 responseText与XMLHttpRequest
存在,但与fetch()
不存在:
fetch("validate-recaptcha.php", {
method: "post",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({ name: "myName", password: "myPassword" })
})
.then((response) => {
if (response.status == 200) {
alert(response.statusText);
}
else {
alert("Error: " + response.statusText);
}
/* returns a promise that can be utilized using `then() */
return response.json();
// could also use then() here
// return response.json().then(data => console.log(data));
})
.then(data => console.log(data));
希望有帮助!