javascript - 无法从 GET 响应中读取值

标签 javascript

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/

相关文章:

javascript - 未触发 child 的点击事件

javascript - Node js :Cannot read property 'text' of undefined

javascript - 在移动浏览器中更改窗口方向时应显示相同的内容

javascript - Ajax 不适用于 Android 谷歌浏览器

javascript - 为什么事件处理程序能够劫持我对 eval 的直接调用?

javascript - 在Python Gae和客户端之间传递加密数据

javascript - 如何获取 <p :selectOneMenu> in jquery? 的值

javascript - 没有 jsx 的 react ,我可以使用模板字符串而不是 createElement 吗?

javascript - 如何使用 document.write 编写 JavaScript 代码?

javascript - HTML/JS/在一个选项卡中花费的时间