javascript - JQuery/AJAX 调用没有命中 Spring MVC Controller

标签 javascript jquery ajax spring spring-mvc

我试图在创建更改密码页面时验证用户名和其他字段。问题是 Jquery 脚本中的 AJAX 调用没有命中我的 Controller 。我也尝试在 ajax 请求的 url 字段中提供硬编码路径。 下面是我的脚本

此 checkUname 函数在输入字段之一的 onblur 事件上触发。

 <script type="text/javascript">
        function checkUname() 
            {
                // get the form values

                var uName = $('#username').val();
                var secQues = $('#secQues').val();
                var secAns = $('#secAns').val();

                var dataObject = JSON.stringify({
                                                    'uName'  : uName,
                                                    'secQues': secQues,
                                                    'secAns' : secAns
                                                });
             $.ajax({
                    url:"validateCredentials.do" ,
                    type: "POST" ,
                    data: dataObject ,
                    contentType: "application/json; charset=utf-8" ,
                    dataType : 'json' ,                 
                    success: function(response)
                                                {
                                                 alert(response);                           
                                                } ,
                    error: function()
                                        {
                                        alert('Error fetching record.... Sorry..');
                                        }
                    }); 
         }
        </script>

这是我的 MVC Controller

    @Controller
public class ArsController 
{
    @RequestMapping(value="validateCredentials.do", method = RequestMethod.POST)
    public String changePass(@RequestParam("uName") String uName ,@RequestParam("secQues")String secQues,
                                   @RequestParam("secAns") String secAns)
    {
        System.out.println("AJAX request");
        Users dummyUSer = null;
        String msg = null;

                try 
                {
                    dummyUSer = servObj.findUser(uName);
                } 
                catch (ArsException e) 
                {
                    System.out.println("error occurred while validating user data during password change");
                    e.printStackTrace();
                }

                if(dummyUSer == null)
                {
                    msg = "No user exists with this username";
                }

                else
                {
                    if(!secQues.equals(dummyUSer.getSecQues()))
                    {
                        msg = "Security question is not correct";
                    }
                    else
                    {
                        if(!secAns.equals(dummyUSer.getSecAns()))
                        {
                            msg = "Security answer does not match";
                        }
                    }
                }

        return msg;
    }

最佳答案

您应该使用 String 而不是在 Controller 中使用 RequestParam。因为当我们发布 JSON 数据时,它不会作为单独的参数出现在 Request 中,而是会在您的 Controller 中作为 String 接收。获取字符串后,将其转换为 JSON 对象,然后相应地获取您的值。

关于javascript - JQuery/AJAX 调用没有命中 Spring MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46245254/

相关文章:

javascript - event.preventDefault() 不适用于 android chrome

jquery - 在 express js 应用程序中正确包含 jquery mobile

javascript - 如何使用 native JavaScript 在 HTML DOM 事件上调用 JSF 托管 Bean?

ajax - WordPress admin-ajax 导致错误 302 重定向

javascript - 使用 jQuery 插件的 Ajax 形式的 TinyMCE 编辑器

javascript - JavaScript 中的序数

javascript - 没有响应正文的 OPTIONS 请求上的 Chrome 长 "Content Download"时间

javascript - 位置 :absolute element not positioned correctly

选项卡中的 jQuery EasyUI 选项卡和 Ajax

javascript - jquery ui 自动完成点击事件处理程序