【问题标题】:Ajax success don't executeAjax 成功不执行
【发布时间】:2015-03-21 15:43:38
【问题描述】:

我正在使用服务器中的 Spring MVC 和客户端中的 JS 和 Ajax 进行登录页面。我不知道出了什么问题,服务器的代码执行但不返回任何内容。 登录.html

<script type="text/javascript">
    $(function() {
        $(".loguser").click(function() {
            var user = $("#login").val();
            var pass = $("#pass").val();            
            $.ajax({
                method: "POST",
                url : "${prefix}loginUser",
                data : "username=" + user + "&password=" + pass,
                dataType : "json",
                success: function(data){
                    if (data.res == "YES") alert("ok");
                    else alert("NOPE");
                }

            });
        })
    })
</script>
    <table id="userData" class="center">

                    <tr id="usernametr">
                        <th><label for="user">Nombre de usuario: </label></th>
                        <th><input id="login" type="text" name="login" value=""
                            placeholder="Name" required /></th>
                    </tr>
                    <tr>
                        <th><br /></th>
                    </tr>
                    <tr>
                        <th><label for="pass">Clave de usuario: </label></th>
                        <th><input id="pass" type="password" name="pass" value=""
                            placeholder="Password" required /></th>
                    </tr>

                    <tr>                        
                        <th><button class="loguser">Acceder</button></th>
                        <th><input type="button" name="lost"
                            value="He perdido mi clave" /></th>
                    </tr>
                </table>

HomeController.java:

@RequestMapping(value = "/loginUser")
    @ResponseBody
    @Transactional
    public String loginUser(@RequestParam("username") String username,
            @RequestParam("password") String pass, HttpServletRequest request, Model model) {
        logger.info("Trying to log in {} {}", username, pass);
        if (username.length() > 3) {
            logger.info("ok");
            return new String("[\"res\": \"YES\"]");
        } else {
            logger.warn("nope");
            return new String("[\"res\": \"NOPE\"]");
        }
    }

我也尝试返回 EntityResponse,但没有任何改变。 Springs 控制台打印记录器信息或警告,但 Firefox 的 javascript 控制台不打印。

【问题讨论】:

  • 当您从客户端触发 POST 请求时,您的处理程序方法是如何被调用的,而它绑定到 GET 请求!能否请您提供整个HomeController 正文?
  • 你知道你在这两种情况下都返回NOPE
  • HomeController 中没有更多内容。它被标记为 @Controller。 @RealSkeptic LOL 是的,我在帖子中更改了它,但我的来源不同,我现在在这里更改它。
  • 您是否尝试过直接访问该 URL 以查看它返回的内容?
  • @RealSkeptic Nop,我该怎么做?你的意思是 reinvasion/loginUser?login=asdf&pass=asdasd ?如果是,是的,我试过了,我收到错误 405 请求方法“获取”不支持。

标签: java javascript ajax spring


【解决方案1】:

您必须在控制器中指定Requestmethod,例如

@RequestMapping(value = "/loginUser", method = RequestMethod.POST)

您必须在 { } 中返回 Json 值 大括号

【讨论】:

  • 不,它没有改变任何东西。它不执行成功功能:(我之前尝试过。
  • 记录器打印,控制器中的一切运行良好,问题是它没有将执行返回到成功函数。来自记录器的示例: INFO : es.ucm.reinvasion.HomeController - 尝试登录 sdsadw rrasa 信息:es.ucm.reinvasion.HomeController - 好的 INFO : es.ucm.reinvasion.HomeController - 尝试登录 das asdasa WARN : es.ucm.reinvasion.HomeController - 不
  • 试试这个 --> $.ajax({ url : '/loginUser', data : { username : username, password : password, }, type : 'POST', success : function(data) { } });并将您的“var user”名称更改为“var username”并与“Password”相同
  • 删除新字符串并返回 "[\"res\": \"NOPE\"]" '
  • 记录器是否打印“ok”?
猜你喜欢
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多