2017-04-19 31 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 

方法這將阻止瀏覽器重裝