2017-04-19 35 views
0

我有一个REST API正在运行,并且我正在使用JQuery向其发布一些数据。使用JQuery提交从REST API不起作用

这是我的jQuery代码的样子:

$(document).ready(function() { 

    $('#login-form').submit(function() { 

     var user = $('#uname').val(); 
     var pass = $('#pwd').val(); 

     alert('username = ' + user); 
     alert('password = ' + pass); 

     var JSONObject = { 'userName': user, 'password': pass }; 
     var jsonData = JSON.parse(JSONObject); 

     $.ajax({ 
      url: 'http://127.0.0.1:8080/user/login', 
      method: 'POST', 
      data: { userName: user, password: pass }, 
      dataType: 'JSON', 
      contentType: 'application/json', 
      success: function (data, status, jqXHR) { 
       //Do something 
       console.log('data = ' + data); 

      }, 
      error: function (jqXHR, status, errorThrown) { 
       alert('error ' + errorThrown); 

      } 
     }); 

    }); 

}); 

然而,这段代码是无法访问的API。我没有在服务器日志中看到预期的消息。 当点击表单的Submit按钮时,浏览器会重新加载,并在url中显示表单输入。就这些。

我的API是用Java写的,这是相关的方法。

@RequestMapping(value = "/user/login", method = RequestMethod.POST) 
    public ResponseEntity<User> logUser(@RequestBody User user){ 

     User loggedUser = loginService.authenticateUser(user); 

     if(loggedUser != null){ 
      System.out.println("User found"); 
      return new ResponseEntity<User>(loggedUser, HttpStatus.ACCEPTED); 
     }else{ 
      //user does not exsits 
      System.out.println("User not found"); 
      return new ResponseEntity<>(HttpStatus.NO_CONTENT); 
     } 

    } 

我真的不明白什么是错的。没有显示任何错误。有人能指出我为什么发生这种情况,以及如何解决这个问题。

回答

1

问题是浏览器正在重新加载提交事件。 您需要添加的preventDefault()这样的

$("#login-form").submit(function (event) { 
     event.preventDefault() 
     //further code here 

方法这将阻止浏览器重装