【问题标题】:ajax form is not submitted, just refreshed and nothingajax表单没有提交,只是刷新了,什么都没有
【发布时间】:2019-03-16 19:16:27
【问题描述】:

我有一个表格来注册新用户。这是表格:

<label for="add-username" class="col-md-4 control-label">Username:</label>
  <div class="col-md-8">
    <input id="add-username" name="username" type="text" class="form-control" placeholder="username"/>
       </div>
         </div>
            <div class="form-group">
              <label for="add-password" class="col-md-4 control-label">Password:</label>
                 <div class="col-md-8">
                    <input id="add-password" name="password" type="password" class="form-control" placeholder="password"/>
                      </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-offset-4 col-md-8">
                                    <c:if test="${duplicate}">
                                        <p class="alert alert-danger">I'm sorry that username is already taken.</p>
                                    </c:if>
                                    <div id="validationRegisterUserErrors" class="alert alert-danger" style="display:none"></div>
                                    <button type="submit" id="user-register-button" class="btn btn-primary">Register</button>
                                </div>
                            </div>

在这个 jsp 文件的末尾,我添加了一个脚本,它在 ajax 中发布表单。脚本是:

  $("#user-register-button").click(function(event){
        event.preventDefault();
        registerUser();
    });
function registerUser(){
    var errorDiv = $("#validationRegisterUserErrors");

    $.ajax({
        url: 'user',
        type: 'POST',
        headers:{
            'Content-type': 'application/json'
        },
        'dataType' : 'json',
        data: JSON.stringify({
            firstName: $('#add-first-name').val(),
            lastName: $('#add-last-name').val(),
            email: $('#add-email').val(),
            username: $('#add-username').val(),
            password: $('#add-password').val()
        })
    }).success(function(data){
        errorDiv.empty();
        errorDiv.hide();
        window.location="login";
    }).error(function (data, status){
            errorDiv.empty();
            errorDiv.show();
            $.each(data.responseJSON.fieldErrors, function (index, validationError){
                errorDiv.append(validationError.message);
                errorDiv.append("<br>");
            });
    });
}

url "user" 在用户控制器中:

@ResponseBody
    @ResponseStatus(HttpStatus.CREATED)
    @RequestMapping(value="/user", method=RequestMethod.POST)
    public User registerUser(@Valid @RequestBody User user, Model model){
        user.setPassword(encoder.encode(user.getPassword()));
        user.setRole("ROLE_USER");
        try {
            userDao.createUser(user);
        } catch (DuplicateKeyException e){
            boolean duplicate = true;
            model.addAttribute("duplicate", duplicate);
        }
        return user;
    }

但是当我点击注册时,页面刷新并且在 url 中写入http://localhost:8080/signup?firstName=abc&amp;lastName=adcd&amp;email=adc%40ll.com&amp;username=abcdef&amp;password=9376868355 但是没有添加用户。即使我没有填写表格并单击注册按钮,也不会出现验证错误,它只是刷新页面。可能是什么问题?

【问题讨论】:

    标签: ajax spring jsp


    【解决方案1】:

    感谢您的参与!!!

    问题出在headers:{...}.i 将我的 ajax 更改为以下,问题就解决了:

    function registerUser(){
        var errorDiv = $("#validationRegisterUserErrors");
        $.ajax({
            url: 'user',
            type: 'POST',
            data: JSON.stringify({
                firstName: $('#add-first-name').val(),
                lastName: $('#add-last-name').val(),
                email: $('#add-email').val(),
                username: $('#add-username').val(),
                password: $('#add-password').val(),
                homeAddress:$('#add-home-add').val(),
                workAddress:$('#add-work-add').val(),
                phoneNumber:$('#add-phone').val(),
                jobPosition:$('#add-job').val(),
                fieldOfStudy:$('#add-field').val()
            }),
            headers:{
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            'dataType' : 'json'
        }).success(function(data, status){
            alert("User has been added.");
            $('#add-first-name').val('');
                $('#add-last-name').val('');
                 $('#add-email').val('');
                 $('#add-username').val('');
                 $('#add-password').val('');
            $('#add-home-add').val('');
            $('#add-work-add').val('');
            $('#add-job').val('');
            $('#add-field').val('');
            $('#add-phone').val('');
            errorDiv.hide();
            window.location="login";
        }).error(function (data, status){
            errorDiv.empty();
            errorDiv.show();
            $.each(data.responseJSON.fieldErrors, function (index, validationError){
                errorDiv.append(validationError.message);
                errorDiv.append("<br>");
            });
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2019-04-16
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2014-06-23
      • 1970-01-01
      • 2017-01-12
      相关资源
      最近更新 更多