JQuery在向服务器发送变量时添加逗号

时间:2017-07-04 14:17:45

标签: javascript jquery spring

我正在使用https://jqueryvalidation.org/库进行表单验证。将变量传递给控制器​​时,会在字符串的开头添加逗号。我不知道为什么。

验证码

$('#registrationForm').validate({
    rules: {
        username: {
            nowhitespace: true,
            required: true,
            minlength: 6,
            maxlength: 36,
            remote : {
                url: '/checkUsername?username=' + encodeURIComponent($('#username').val()),
                type: "GET",
                data: {
                    username: function() {
                        return $('#username').val();
                    }
                }
            }
        },

这是我的控制器

@GetMapping("/checkUsername")
public boolean checkUsername(@RequestParam("username") String username) {
    System.out.println("User: " + username);
    return !userService.existsByUsername(username);
}

除了检查发生了什么之外,我还添加了一个用户名显示,当将用户名传递给控制器​​时,结果如下:

User: ,j
User: ,jo
User: ,jon
User: ,jonk
User: ,jonki

我没有输入这个逗号。他在开始时补充了自己。无处不在。

2 个答案:

答案 0 :(得分:1)

为什么要将用户名附加到url部分以及发布数据中的数据字段。这是一个获取请求。不要在那种情况下使用帖子数据。

答案 1 :(得分:0)

您需要从验证码中删除

      data: {
                username: function() {
                    return $('#username').val();
                }
            }

您的最终代码应为

$('#registrationForm').validate({
    rules: {
        username: {
            nowhitespace: true,
            required: true,
            minlength: 6,
            maxlength: 36,
            remote : {
                url: '/checkUsername?username=' + encodeURIComponent($('#username').val()),
                type: "GET"
            }
        },

或者你可以试试:

        remote : {
            url: '/checkUsername',
            type: "GET",
            data: {
                username: function() {
                    return $('#username').val();
                }
            }
        }