TL:DR 如下
所以,我现在正在学习 Spring 教程之一,制作一个 REST API 应用程序。在后端有一个电子邮件验证服务,它获取 token 进行验证,验证后它会给出状态为“成功”或“错误”的简单响应 - 所有这些都工作正常。前面有一个简单的 HTML 页面,其中包含一个 JS 脚本,该脚本假设检查此响应状态,并根据其值在 HTML 正文中显示不同的消息。问题是 JS 无法从响应中读取值(我按下),因为无论它总是给我“else”选项。我没有任何 JS 知识,我尽力自己弄清楚了,但没有成功。
TL:DR JS 脚本无法从响应中读取“operationStatus”值。
JS脚本:
<script language="JavaScript">
$(document).ready(function () {
var urlParams = new URLSearchParams(location.search);
if (urlParams.has('token')){
verifyToken(urlParams.get('token'));
}
function verifyToken(tokenValue) {
$.get('http://localhost:8080/mobile-app-ws/users/email-verification', {token: tokenValue})
.done(function (response) {
if (response["operationStatus"] === "SUCCESS"){
$("#not-successful-result").attr("style", "display: none !important;");
$("#unknown-result").attr("style", "display: none !important;");
$("#successful-result").attr("style", "display: block !important;");
}else if (response["operationStatus"] === "ERROR"){
$("#successful-result").attr("style", "display: none !important;");
$("#unknown-result").attr("style", "display: none !important;");
$("#not-successful-result").attr("style", "display: block !important;");
}else{
console.log(response);
$("#successful-result").attr("style", "display: none !important;");
$("#not-successful-result").attr("style", "display: none !important;");
$("#unknown-result").attr("style", "display: block !important;");
}
})
}
})
</script>
HTML 正文:
<body>
<div id="successful-result" style="display:none">Successful verification</div>
<div id="not-successful-result" style="display:none">Verification link has expired</div>
<div id="unknown-result" style="display:none">UNKNOWN</div>
</body>
JAVA响应类(RequestOperationStatus和RequestOperationName只是简单的枚举)
public class OperationStatusModel {
private RequestOperationStatus operationStatus;
private RequestOperationName operationName;
}
Postman 的 JSON 响应示例:
{
"operationStatus": "ERROR",
"operationName": "VERIFY_EMAIL"
}
浏览器中的控制台: /image/LuK6g.png
最佳答案
使用$.getJSON
而不是$.get
否则你必须传递Accept: application/json
。
$.getJSON('http://localhost:8080/mobile-app-ws/users/email-verification', {token: tokenValue})
.done(function (response) {
// ...
});
关于javascript - 无法从 GET 响应中读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61388822/