使用Jquery的Spring MVC AJAX无法检索json响应

时间:2015-05-25 02:47:08

标签: jquery ajax spring

我想通过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响应。我怀疑我的错误是在客户端。我甚至无法在成功功能中发出警报。

1 个答案:

答案 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);