2015-05-25 83 views
0

我想通過ajax搜索一個帳戶。我在客戶端有這個。jQuery的Spring MVC AJAX無法檢索json響應

<form id="fetchAccount"> 
    <input type="search" name="id"/> 
    <input type="submit"/> 
</form> 

<script> 
    $(document).ready(function(){ 
     $('#fetchAccount').on('submit', function(e){ 

      var data = $(this).serialize(); 
      var header = $("meta[name='_csrf_header']").attr("content"); 
      var token = $("meta[name='_csrf']").attr("content"); 

      $.ajax({ 
       data:data, 
       type:"PUT", 
       url:"fetchAccout", 
       dataType : 'json', 
       contentType : 'application/json; charset=utf-8', 
       beforeSend: function(xhr){ 
        xhr.setRequestHeader(header, token); 
       }, 
       success: function(response){ 
        console.log(response); 
       } 
      }); 
      e.preventDefault(); 
     }); 
    }); 
</script> 

和具有200的HTTP響應控制器

@RequestMapping(value="/fetchAccout", method=RequestMethod.PUT, 
       produces= MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) 
@ResponseBody 
public Account fetchAccount(@RequestParam(value="id", required=false) Long id){ 
    Account account = null; 
    if(id != null) 
     account = custService.findAccountById(id); 
    return account; 
} 

林上。我懷疑我的錯誤在客戶端。我甚至不能在成功功能中做出警報。

回答

0

您的返回類型是200,這意味着成功,但我可以看到您的控制器方法的問題。您期望返回一個字符串,但實際上是返回Account,將其更改爲以下並嘗試。

@RequestMapping(value="/fetchAccout", method=RequestMethod.PUT, 
       produces= MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) 
@ResponseBody 
public Account fetchAccount(@RequestParam(value="id", required=false) Long id){ 
    Account account = null; 
    if(id != null) 
     account = custService.findAccountById(id); 
    return account; 
} 

這將返回一個帳戶對象。 然後更改您的控制檯輸出以返回帳戶參數,例如如果它有號碼然後讓它做到這一點:

console.log(response.number); 
+0

哦對不起錯字。我真的這樣做,但仍然不能看到響應對象.. –

+0

你檢查findAccountById實際上是否返回任何東西嗎?你的ID實際上是否返回null?我會取出if(id!= null)行並測試它。 – Aeseir

+0

哦,我發現ID在im檢索requestparam是空的。 –