开发者问题收集

无法从 GET 响应中读取值

2020-04-23
76

TL:DR 如下

所以,我现在正在学习 Spring 教程之一,制作一个 REST API 应用程序。在后端有一个电子邮件验证服务,它获取令牌进行验证,验证后它会给出状态为“SUCCESS”或“ERROR”的简单响应 - 所有这些都运行正常。在前端有一个简单的 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"
}

以及浏览器中的控制台: https://i.sstatic.net/LuK6g.png

2个回答

使用 $.getJSON 而不是 $.get ,否则您必须传递 Accept: application/json

$.getJSON('http://localhost:8080/mobile-app-ws/users/email-verification', {token: tokenValue})
    .done(function (response) {
        // ...
    });
xdeepakv
2020-04-23

更改

954294199

to

111222631

如果这不起作用。看看有什么回应。尝试这个。在该行之前

860303167

放置一个控制台。

sawili1495
2020-04-23