我想通过ajax搜索一个帐户。我在客户端有这个。
<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>
在控制器上
@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;
}
我有200 HTTP响应。我怀疑我的错误是在客户端。我甚至无法在成功功能中发出警报。
答案 0 :(得分:0)
您的返回类型为200表示成功但我可以看到您的控制器方法出现问题。您期望返回一个字符串,但实际上正在返回帐户,将其更改为以下并尝试。
@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);